Mikro C PIC - string - problém
"Ing. Libor Konečný"
support na mikrovlny.cz
Úterý Leden 14 11:26:28 CET 2014
Nestandardni funkci mel kolega na mysli , ze ji napisete sam.
Tnz
BYTE pole[50];
BYTE pole2[50];
void funkce (BYTE *ukazatelnapole)
{
for (i=0; i<100; i++) *ukazatelnapole++=i;
}
Pri volani z main
funkce(&pole); (& davam vzdy pro jistotu starsi kompilatory na
ubicomu s tim mely problem)
se prepise i pole2 protoze v cyklu for se jede dle adresy promenne a
kompilatoru nezna delku pri pouziti ukazatelu.
Tak na to pozor, na mikrokontroleru to neni takova hruza, pod OS to muze
byt znacne horsi.
LK
Dne 14.1.2014 10:48, Jan Půhoný napsal(a):
> 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
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140114/177c5b68/attachment.html>
Další informace o konferenci Hw-list