Arduino a zadrhel zacatecnika

Pavel Kutina hw na prelude.cz
Neděle Březen 1 22:01:50 CET 2015


Zdravim,

C neni muj kamarad a to ani v Arduinu... Resim nasledujici problem (prosim, 
nebijte mne, fakt vim o C stale dost malo, takze je velmi pravdepodobne, ze 
se ptam na trivialitu a unika mi neco zakladniho):

Mam promennou (int), v ni nejakou namerenou hodnotu.
Mam seriovy kanal, pres ktery bych tu hodnotu rad dostal ven.
Kdyz pouziju Serial.print(promenna), tak mi to do serioveho kanalu vysype to 
jako soubor znaku.

tedy:

uint32_t pokus = 65;
Serial.print(pokus);

vystupem na seriovem kanalu jsou znaky '6', '5'.

Ano, existuje parametr pro print ve tvaru

Serial.print(pokus, HEX);

pak jsou vystupem znaky '4', '1';

Trochu problem je, ze ja bych si rad obsah te promenne nejdriv rozebral po 
bajtech, pridal jeste nejaky bitovy flag, potom udelal kontrolni soucet, ten 
prilepil k puvodni zprave  a pak to cele odeslal v hex pres seriak do sveta, 
jak to tak vidim, tak tu nejjednodussi metodu odeslani HEX cisla asi 
nepouziju.

Variantou je Serial.write(char);
Ten samozrejme v tom predchozim prikladu odesle znak 'A', tedy odesle 0x41;

Umi ale odeslat jen bajt po bajtu, takze bych potreboval nejak zkonvertovat 
tu hodnotu do hex, nahodit jeste par bitu jako indikator, pak ji bajt po 
bajtu nejak zCRCat, prilepit CRC k tomu puvodnimu cislu a zase bajt po bajtu 
poslat ven.

Zjevne mi neco zasadniho unika (navic jsem silne nastydly, takze hlava moc 
nefunguje) - napadne vas nejake (pokud mozno transparentni a pochopitelne i 
pro blbce, pointer na pointer pointeru jsem nepobral dodnes) reseni? Na 
druhe strane si to budu resit v Pascalu, tam snad vim, jak na to, ale na 
vysilaci mam Arduino a tenhle divny jazyk...

Diky za kazdy kopanec spravnym smerem.

Pavel Kutina 



Další informace o konferenci Hw-list