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