logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Konwersja danych z systemu HEX na Float (IEEE745) w Bascom

lolek50 14 Lut 2021 11:19 492 9
  • #1 19255224
    lolek50
    Poziom 10  
    Mama taki temat - potrzebuję przeliczyć dane z systemu hex na zmiennoprzecinkowy float (IEEE745).
    dane wejściowe hex np: 43 76 18 BA
    Po konwersji - wynik float: 246.1

    Czy ktoś spotkał się z tym jak dokonać takiej konwersji w bascom. Przy odbiorze danych w PC i aplikacji to już coś innego tu nie ma takiego problemu. Pytanie również czy taka konwersja w bascom będzie w ogóle efektywna? Z jednej strony mogę takie dane wysyłać do PC i tam wyświetlać wynik. Ale jeśli chciałbym coś wyświetlić na LCD to już muszę je i tak w bascomie przekonwertować.
  • #3 19255838
    BlueDraco
    Specjalista - Mikrokontrolery
    lolek50 napisał:
    Mama taki temat - potrzebuję przeliczyć dane z systemu hex na zmiennoprzecinkowy float (IEEE745).
    dane wejściowe hex np: 43 76 18 BA
    Po konwersji - wynik float: 246.1


    Nieprawda. Potrzebujesz wyświetlić dziesiętną postać zmiennopozycyjną danej, którą masz podaną w postaci szesnastkowego zapisu binarnej zawartości pamięci. żadnej konwersji tu nie ma.
  • #4 19256090
    lolek50
    Poziom 10  
    Dzięki za podpowiedzi ale to niestety to jeszcze nie mój poziom...
    Jeśli jestem elektrykiem to jeszcze nie elektronikiem 8-)
  • Pomocny post
    #5 19256107
    bart-projects
    Poziom 29  
    To może taki kolorowy obrazek z LCD ;)
    Deklarujesz tablicę czterech bajtów Arr(4) As Byte
    Na tę tablicę poprzez Overlay nakładasz Single
    Ładujesz swoje cztery bajty po kolei do tablicy Arr(1) - Arr(4) a wyświetlasz Single. Proste jak świński ogon ;)

    Konwersja danych z systemu HEX na Float (IEEE745) w Bascom
  • #6 19256205
    lolek50
    Poziom 10  
    Dzięki, wszystko jasne! :D

    Dodano po 1 [godziny] 3 [minuty]:

    Potrzebuję jeszcze jednej podpowiedzi :wink:
    Poszczególne dane otrzymuję z bufora - HEX(bufor(4)) czyli stringi, jak wprowadzić go do Arr(4), testowałem String2digits ale nie działa, a podmieniłem tylko Arr(4) i już wyświetla mi 0.0

    Dodano po 1 [godziny] 6 [minuty]:

    Niestety Arr(4) = HEXVAL(bufor(4)) też nie pomaga
  • #7 19256619
    bart-projects
    Poziom 29  
    Najlepiej pokaż kod w części odbiorczej bo może niepotrzebnie robisz te konwersje tam i z powrotem.

    Możesz od razu ładować te dane jak przychodzą tylko w zależności od kolejności przesyłania może musisz to robić od końca
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Chyba że chcesz to wyciągać z tych hexstringów...
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • #8 19256700
    lolek50
    Poziom 10  
    OK podsyłam, nie do końca to rozumiem z wyświetlaniem odpowiednich wartości nie ma problemu - linia drug LCD. Jeśli Arr(4) etc. jest = &H... to jest ok ale jak już podstawie Hexval(bufor(4)) nic nie działa

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #9 19256728
    bart-projects
    Poziom 29  
    Tablica Bufor() jest typu Byte więc to nie Stringi i konwersja Hexval do niczego się nie przyda. Bajty są zamieniane niejawnie we Frame tylko na potrzeby wyświetlania na LCD.

    Coś w ten deseń powinno działać. Ogólnie to można to mocno poskracać, ale nie chciałem zaciemniać.

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • #10 19256819
    lolek50
    Poziom 10  
    Super, dzięki wszystko już działa :D
REKLAMA