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