Wydzielenie bajtów i zapisanie ich w dec z przecinkiem

Sprawy związane z interfejsem użytkownika - kontrolki, wskaźniki, wyświetlacze, wykresy oraz inne zagadnienia tego typu...
1125
Posty: 37
Rejestracja: 25 cze 2011 09:28
Wersja środowiska: LabVIEW 2011

Wydzielenie bajtów i zapisanie ich w dec z przecinkiem

Post autor: 1125 »

Witam

Mam dość prozaiczny problem, odczytuję dane z rejestratora po RS485, wysyłając ramkę otrzymuję odpowiedź jedynasto bajtową: 0103 0629 EF00 0000 03B3 5A. I wszystko ładnie wygląda 29 EF oznacza wartość a trzeci od końca bajt "03" oznacza miejsce po przecinku czyli 10,735. Problem mam z tym żeby wydzielić z tego ciągu bajtów ten wyniki i zapisać go z przecinkiem. Cały czas próbuję to wykonać, będę wdzięczny za podpowiedź jak tego dokonać.

Pozdrawiam
Krzysiek
Awatar użytkownika
Pitol
Moderator
Posty: 982
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Wydzielenie bajtów i zapisanie ich w dec z przecinkiem

Post autor: Pitol »

Pracujesz na stringach więc: Match Pattern bloczek aby podzielić liczbę na wartość przed i po przecinku. Następnie złącz oba elementy z przecinkiem między i wrzuć to w bloczek Fractional String to Number (lub o podobnej nazwie).

EDIT: zapomniałem, że to w hexie jest. To musisz jeszcze zamienić stringi w hex na dec. Nie chce mi się kombinować, więc najprościej: hex(string) -> dec(num) -> dec(string) -> połączyć obie liczby -> frac(string) -> frac(num).
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Re: Wydzielenie bajtów i zapisanie ich w dec z przecinkiem

Post autor: Jamal79 »

Pitol pisze:Pracujesz na stringach więc: Match Pattern bloczek aby podzielić liczbę na wartość przed i po przecinku. Następnie złącz oba elementy z przecinkiem między i wrzuć to w bloczek Fractional String to Number (lub o podobnej nazwie).
hehehe, Chyba miales na mysli, ze pracuje "w stringach" :ymdevil:
Załączniki
moze cos takiego ci pomoze...
moze cos takiego ci pomoze...
aaa.png (11.01 KiB) Przejrzano 8297 razy
1125
Posty: 37
Rejestracja: 25 cze 2011 09:28
Wersja środowiska: LabVIEW 2011

Wydzielenie bajtów i zapisanie ich w dec z przecinkiem

Post autor: 1125 »

Dzięki za szybką odpowiedź. Wykonałem to bardzo prosto, String To Byte Array - Index Array - Join Numbers i na koniec żeby uzyskać przecinek to podzieliłem wartość przez 1000 bo 3 zera mam i zawsze tak będzie nie inaczej. Widzę tylko że jak jest np 6,230 to pokazuje 6,23.

Pozdrawiam
Krzysiek
Jate
Posty: 14
Rejestracja: 06 sty 2012 17:23
Wersja środowiska: LabVIEW 2010

Wydzielenie bajtów i zapisanie ich w dec z przecinkiem

Post autor: Jate »

Witam,
mam podobny problem
odczytuję ramkę danych w postaci string po RS, która składa się z 14 bajtów

19 25 3B 4F 5D 60 75 83 9E A0 B0 C0 D4 E8

wydzielam bajt 25 i 3B

Moje pytanie jak usunąć numery bajtów a następnie skleić dane 5 i B tak aby powstał bajt o wartości 5B
Próbowałem różnych kombinacji ale nic nie wychodzi.
Załączniki
diagram_bajty.jpg
panel_bajty.jpg
UT60A v3.vi
(16.99 KiB) Pobrany 427 razy
MicMac89
Posty: 122
Rejestracja: 05 wrz 2011 20:40
Wersja środowiska: LabVIEW 2011

Re: Wydzielenie bajtów i zapisanie ich w dec z przecinkiem

Post autor: MicMac89 »

Rozwiązanie jest proste korzystając z operatorów logicznych z palety Boolean, które oprócz pracy z wartościami logicznymi 0,1 pracują też z liczbami całkowitymi. W załączniku rozwiązanie problemu.
Załączniki
Kod programu
Kod programu
składanie.png (19.96 KiB) Przejrzano 8201 razy
sklejenie dwóch bajtów.vi
Wersja 2010
(9.03 KiB) Pobrany 422 razy
sklejenie dwóch bajtów.vi
(10.99 KiB) Pobrany 428 razy
Certified LabVIEW Associate Developer
ODPOWIEDZ