Diskuze: arduino int64 do hex

Hardware PC Mikrokontroléry arduino int64 do hex

Avatar
kxmx
Redaktor
Avatar
kxmx:

Ahoj, modbusová funkce mi vrací číslo typu int64, to potřebuji předat na druhou sériovou linku v hex tvaru, bohužel třída String neumí int64 převést na hex

int64_t val = 9223372036854775807;
String result = String(val, HEX);

//

call of overloaded 'String(int64_t&, int)' is ambiguous

Co s tím? Naprogramovat si převod dec to hex po svém?

 
Odpovědět 18. července 15:23
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na kxmx
ostrozan:

pokud chceš jenom data přeposlat dál jako 8 bajtů po sériovce, tak si to budeš muset rozdělit na 2x int32_t

int64_t val = 9223372036854775807;
int32_t tmp = val;
Serial.write(tmp);
tmp = val >> 32;
Serial.write(tmp);

pokud ale chceš poslat "textovou" podobu - tady konkrétně "‭7FFFFFFFFFF­FFFFF‬" což mi sice není jasné proč, ale postup by byl podobný

int64_t val = 9223372036854775807;
int32_t  tmp = val;
String result = String(tmp, HEX);
tmp = val>>32;
result  += String(tmp, HEX);

arduino bohužel ve svých metodách nepracuje s větším typem, než int32_t(long) - leda že by sis metodu do třídy Serial, nebo String dopsal :-)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 19. července 0:19
Avatar
kxmx
Redaktor
Avatar
kxmx:

Díky, přesně to jsem potřeboval. Na druhé sériové lince mám totiž modem, který do AT příkazu pro odeslání dat přijímá sekvenci bajtů v hex tvaru.

 
Nahoru Odpovědět 19. července 10:36
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.