Mikro C PIC - string - problém

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Úterý Leden 14 17:01:29 CET 2014


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
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



---
Tato zpráva neobsahuje viry ani jiný škodlivý kód - avast! Antivirus je aktivní.
http://www.avast.com
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140114/078a3589/attachment-0001.html>


Další informace o konferenci Hw-list