Witajcie , pomoże ktoś naprowadzić jak najbardziej komfortowo i prosto przekonwertować liczbę 16-bit hex na dec ?
Odbieram dane 2 bajty z modułu pomiarowego (ultradźwiękowy moduł pomiaru odległości) który wyniki pomiaru wysyła w 2 liczbach :
ponieważ pierwszy bajt to starsza część wyniku (H_DATA) a drugi bajt to część młodsza (L_DATA) to składam to w całość tak :
Jeżeli dobrze kombinuję to teraz w liczniku mam liczbę 16bit odebraną z UARTA ale w reprezentacji heksadecymalnej. Tak jak deklaruje producent modułu pomiarowego.
No i teraz chcę to obrabiać , przeliczać na metry itp. Także wyświetlić na LED jako wartość milimetrów od przeszkody. Mam procedurę obsługi wyświetlacza LED która wyświetla bardzo ładnie liczbę ze zmiennej na wyświetlacz LED. (0...9999 w zmiennej - i to wyświetli)
No ale jeżeli próbuję to wyświetlić na LED wprost to mi się bzdury wyświetlają, bo wynik jest w hex (np. odbieram 0x07A1 - z tego co podaje producent trzeba to przekonwertować na wartość dziesiętną (decimal) i powinienem uzyskać po operacji konwersji '1953' (elegancki wynik w milimetrach od przeszkody). Próbowałem na różne sposoby ale wynik nie jest prawidłowy.
Proszę o wskazówkę jak tego prosto dokonać ?
Próbowałem :
Próbowałem również:
Niestety głupoty mi z tego wychodzą bo nie do końca rozumiem jak to działa.
Podpowie ktoś jak tego szybko dokonać ? Z góry dziękuję za pomoc !
Odbieram dane 2 bajty z modułu pomiarowego (ultradźwiękowy moduł pomiaru odległości) który wyniki pomiaru wysyła w 2 liczbach :
Kod: C / C++
ponieważ pierwszy bajt to starsza część wyniku (H_DATA) a drugi bajt to część młodsza (L_DATA) to składam to w całość tak :
Kod: C / C++
Jeżeli dobrze kombinuję to teraz w liczniku mam liczbę 16bit odebraną z UARTA ale w reprezentacji heksadecymalnej. Tak jak deklaruje producent modułu pomiarowego.
No i teraz chcę to obrabiać , przeliczać na metry itp. Także wyświetlić na LED jako wartość milimetrów od przeszkody. Mam procedurę obsługi wyświetlacza LED która wyświetla bardzo ładnie liczbę ze zmiennej na wyświetlacz LED. (0...9999 w zmiennej - i to wyświetli)
No ale jeżeli próbuję to wyświetlić na LED wprost to mi się bzdury wyświetlają, bo wynik jest w hex (np. odbieram 0x07A1 - z tego co podaje producent trzeba to przekonwertować na wartość dziesiętną (decimal) i powinienem uzyskać po operacji konwersji '1953' (elegancki wynik w milimetrach od przeszkody). Próbowałem na różne sposoby ale wynik nie jest prawidłowy.
Proszę o wskazówkę jak tego prosto dokonać ?
Próbowałem :
Kod: C / C++
Próbowałem również:
Kod: C / C++
Niestety głupoty mi z tego wychodzą bo nie do końca rozumiem jak to działa.
Podpowie ktoś jak tego szybko dokonać ? Z góry dziękuję za pomoc !