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