RE: Mikro C PIC - string - problém

Zuffa Jan ZuffaJ na cgc.sk
Úterý Leden 14 17:46:47 CET 2014


a existuju aj take co maju 8 noh?
lebo PIC  hej. pri bastleni je to vyhoda
nepajkovat 64 vyvodove puzdro :)

j.

From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jaroslav Buchta
Sent: Tuesday, January 14, 2014 5:01 PM
To: HW-news
Subject: Re: Mikro C PIC - string - problém

Zahodil bych PICy a presel na STM32xxx...

Dne 14.1.2014 15:53, Jan Půhoný napsal(a):
Díky všem za vysvětlení.

Koukám, že ty string operace docela žerou paměť procesoru. Asi ten Mikro C budu muset koupit... protože jsem na demo limitu :-( (max 2k HEX).

Je to dobrá volba, nebo za ty peníze koupím na PICy něco lepšího?

Nebo bude lepší spíš tam dát nějaký pinově kompatibilní 18F ... ty mají podporu C přímo v MPLABu zdarma, ne?

Honza Půhoný

Dne 14. ledna 2014 11:49 Martin Persich <persich na transcon.cz<mailto:persich na transcon.cz>> napsal(a):
Přiznávám, možnosti knihoven v Mikro C vůbec neznám, PIC neprogramuji. Délka bufferu lze sice zjistit pomocí "sizeof()", ale to si musíte "ručně" pohlídat, tj. nejdříve zjistit velikost a pak případně provést další akci. Nic automatizovaného a navíc obvykle je velikost bufefru v těchto případech konstantní a postrádá to smysl.
Ale měl jsem na mysli vytvoření svých speciálních funkcí, které toto budou zohledňovat a např. pro obsluhu LCD displeje známé velikosti vystačí pouze s bufferem o délce tohoto displeje. Jinak standardně toto řeší objekty CString (nebo tak nějak v "C++"), ale to je jiná kategorie a asi se to nedá rozumně použít na malé MCU, osobně také zůstávám pouze u "C".
Martin. persich na transcon.cz<mailto:persich na transcon.cz>
----- Original Message -----
From: Jan Půhoný<mailto:konference na puhy.cz>
To: HW-news<mailto:hw-list na list.hw.cz>
Sent: Tuesday, January 14, 2014 10:48 AM
Subject: Re: Mikro C PIC - string - problém

A těmi nestandardními funkcemi, máte na mysli co? Je něco takového v Mikro C PIC možné využít?

H.

Dne 14. ledna 2014 10:35 Martin Persich <persich na transcon.cz<mailto:persich na transcon.cz>> napsal(a):
Pokud používáte standardní funkce "str...()", tak si bohužel délku bufferů musíte v programu hlídat sám. A hodně důsledně! Stačí chvilka nepozornosti a i po několika letech se objevují v programu chyby... To je bohužel jeden z velkých nedostatků (a zárověň výhod .-) ) jazykä "C".
Martin

----- Original Message -----
From: Jan Půhoný<mailto:konference na puhy.cz>
To: HW-news<mailto:hw-list na list.hw.cz>
Sent: Tuesday, January 14, 2014 10:25 AM
Subject: Re: Mikro C PIC - string - problém

Díky moc - bylo to tou špatnou deklarací v druhém souboru, proto mi to rozhazovalo displej a občas se to i kouslo.

Teď se to chová korektně.

Je tedy potřeba hlídat, aby délka toho bufferu byla vždy 16+1 znaků? Není na to nějaká funkce která by to zajistila?

Ještě jednou díky všem, nemohl jsem na to dlouho přijít.

Honza Půhoný


S pozdravem Ing. Jan Půhoný

www.puhy.cz<http://www.puhy.cz/>
puhy na puhy.cz<mailto:puhy na puhy.cz>

Navštivte nás na Facebooku:
http://www.facebook.com/puhy.cz

Následujte nás na Twitteru:
https://twitter.com/puhycz

Náš kanál na YouTube:
http://www.youtube.com/user/puhyeu

Připojení k internetu a VoIP telefonování
http://www.puhy.net

Dne 14. ledna 2014 10:01 Martin Persich <persich na transcon.cz<mailto:persich na transcon.cz>> napsal(a):
V druhém souboru by měla být jen deklarace:
extern unsigned char prvni_r[];
extern unsigned char druhy_r[];

Počet prvků (délku bufferu) si musí program v "C" bohužel hlídat sám, není problém téměř cokoliv, kdekoliv přepsat mimo tento buffer ... :-(
Jinak ten uvedený zápis jednotlivých prvků do bufferu v druhém souboru je dle mého v pořádku a v rámci možností (tj. jazyka "C") korektní.

Martin. persich na transcon.cz<mailto:persich na transcon.cz>

----- Original Message -----
From: Jan Půhoný<mailto:konference na puhy.cz>
To: HW-news<mailto:hw-list na list.hw.cz>
Sent: Tuesday, January 14, 2014 9:37 AM
Subject: Re: Mikro C PIC - string - problém

Díky všem za odpovědi.

Zdá se, te strcpy funguje stejně jak s & tak bez &. Ještě to ale trochu zlobí, když do prvni_r a druhy_r šahám přes takovýto zápis

extern unsigned char prvni_r[17]="                ";
extern unsigned char druhy_r[17]="                ";

prvni_r[8]=jednotky;
prvni_r[9]=desitky;
prvni_r[10]=':';

z jiného c souboru stejného projektu.

V hlavním c souboru s main void mám definici takto:

unsigned char prvni_r[17]="                ";
unsigned char druhy_r[17]="                ";

Jak korektně přistupovat ke stejným proměnným z různých c souborů projektu?

Díky.

Honza Půhoný


Dne 13. ledna 2014 22:13 Martin Persich <persich na transcon.cz<mailto:persich na transcon.cz>> napsal(a):
A ještě jeden postřeh. Pokud se jedná o buffer pro 16-ti znakový LCD displej, tak pro použití funkce "strcpy()" je nezbytné, aby tento buffer měl délku 17 znaků (pro uložení ukončující "nuly" - '\0' ). Jinak dojde k nedefinovanému přepsání "následující" proměnné.
Martin. persich na transcon.cz<mailto:persich na transcon.cz>

----- Original Message -----
From: Aleš Novák<mailto:alesh.novak na email.cz>
To: HW-news<mailto:hw-list na list.hw.cz>
Sent: Monday, January 13, 2014 9:32 PM
Subject: Re: Mikro C PIC - string - problém

Nemelo by to byt spise takhle:
stcrpy(prvni_r,"testovaci napis");

Jmeno pole je samo o sobe pointer na jeho prvni polozku.

Ales


13. ledna 2014, 20:31:59, napsal jste:

Zkuste stcrpy(&prvni_r,"testovaci napis");



LK


Dne 13.1.2014 19:53, Jan Půhoný napsal(a):
Zdravím konferenci,

mám tady takový lama problém v C (Mikro C pro PIC řady 16).

V proměnné prvni_r mám znaky pro první řádek LCD displeje (pak to vypisuji přes Lcd_Out(1,1prvni_r); - to funguje.

//definice

unsigned char prvni_r[16];

//editace znaků

prvni_r[5] = 223;
prvni_r[6] = 'C';
prvni_r[7] ='  ';

Lcd_Out(1,1prvni_r); //na pozici 5,6,7 mi to vypíše °C
to funguje ok

Proč ale nefunguje toto:

prvni_r="testovaci napis";

na tomto řádku to hází error: Assigning to non-lvalue

Co s tím, abych tam mohl dávat jak celé řetězce a zároveň editovat jednotlivé znaky?

Díky,

Honza Půhoný


_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz<http://www.HW.cz> Hw-list na list.hw.cz<mailto:Hw-list na list.hw.cz> http://list.hw.cz/mailman/listinfo/hw-list




--
S pozdravem,
 Aleš
 alesh.novak na email.cz<mailto:alesh.novak na email.cz>
________________________________


________________________________
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz<http://www.HW.cz>
Hw-list na list.hw.cz<mailto:Hw-list na list.hw.cz>
http://list.hw.cz/mailman/listinfo/hw-list

_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz<http://www.HW.cz>
Hw-list na list.hw.cz<mailto:Hw-list na list.hw.cz>
http://list.hw.cz/mailman/listinfo/hw-list





_______________________________________________

HW-list mailing list  -  sponsored by www.HW.cz<http://www.HW.cz>

Hw-list na list.hw.cz<mailto:Hw-list na list.hw.cz>

http://list.hw.cz/mailman/listinfo/hw-list


________________________________
[http://static.avast.com/emails/avast-mail-stamp.png]<http://www.avast.com/>


Tato zpráva neobsahuje viry ani jiný škodlivý kód -avast! Antivirus<http://www.avast.com/> je aktivní.


------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140114/df64cd7c/attachment.html>


Další informace o konferenci Hw-list