Pokud se jedná o USART - z vlastní zkušenosti doporučuju pro přenos používat ASCII znaků - převod za pomoci funkce itoa a na druhé straně zpět funkcí atoi (můžou se jmenovat trochu jinak - záleží na překladači) zas tolik nezabere. Hlavní výhoda je v možnosti použití řídících znaků - typicky 0x0D jako konec zprávy.
No jednoduše tak ji uložíš zase do proměnné typu float.
Záleží taky , co pak s ní chceš dělat dál.
Osobně ale doporučuju, pokud nepotřebuješ pracovat s deseti místy za desetinnou čárkou tak se proměnným typu float úplně vyhnout.
Výsledek prostě vynásobit 100 (pro dvě desetiná čísla), případně 1000(pro tři) a pak v případě potřeby tím samým číslem vydělit.
Jo to je dobé plán, ale nějak nevím jak.
To byla právě ta otázka jak to uložit do floatu, aby to bral jako zápis čísla 0.9 a né 10646… atd.
A rád bych se tomu floatu vyhnul, ale bohužel to nejde. Prostě přijímám 4 Bajty z černé krabičky, které reprezentují 1float proměnnou a já jí akorát chci zobrazit, žádné jiné operace.
Ano, je to to samé.Vždy tam máš ukazatel na počáteční adresu části paměti o velikosti 4 byte ať už je deklarovaná jakkoli - float, či long, nebo pole čtyř bytů: char recv] = {0xFA, 0x50, 0x76,0x3F};
Jenom tam máš ještě použitou funkci (dtostrf) která ti převede to číslo do ASCII znaků, abys je mohl zobrazit - proto jsem se ptal co s tím chceš vlastně dělat.
A navíc to jde i zjednodušit- pokud máš tedy nějaký RX (přijímací) buffer UARTU - pojmenovaný třeba UartRxBuffer[20]
float fnum = * (float*) &UartRxBuffer?] ; Místo otazníku si samozřejmě dej číslo, kde ti v té zprávě přijaté přes UART ta hodnota začíná.
Ono by vůbec bylo lepší, kdybys nás hned detailněji seznámil s tím, co vlastně děláš, leze to z tebe jak z chlupaté deky .
Měls začít tím: Z černé krabičky přijímám pomocí UARTU data(různé datové typy) rozsekané do jednotlivých bytů a chci je zobrazit.
Z dalšího textu vyplývá, že jsou přijaty jako ascii string.
Potom je snad lepší přenášet hodnoty v lidsky srozumitelném tvaru “0.96”.
Pokud ovšem formát není pevně daný nějakým zařízením z kterého pouze přijímáme.