Problem z bloczkiem NUmber to hexadecimal string

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Problem z bloczkiem NUmber to hexadecimal string

Post autor: limatorek »

Jak w temacie. Nie wiem skąd on dodaje do każdego stringu 30 w hexie. Np gdy zamieniam liczbę typu double równą 0 na jego wyjściu mam 30, gdy zamieniam liczbę typu double równą 8 na jego wyjściu mam 38 co jest grane?? Jak wysłać liczbę np. 4,55. Ten bloczek zamienia mi to na liczbę całkowitą. I wysyłam 4. Jak wysyłać całą liczbę.?? Po drugie to na razie nie wiem czemu on do kazdje liczby na wyjściu dodaje 30.
Awatar użytkownika
Nowszy
Posty: 504
Rejestracja: 30 maja 2008 08:33
Wersja środowiska: LabVIEW 2011
Lokalizacja: Katowice
Kontakt:

Problem z bloczkiem NUmber to hexadecimal string

Post autor: Nowszy »

Witaj

Wynika to z tego, że znak '0' ma w ASCII kod właśnie '30' (zapisany w hexach), każda kolejna cyfra ma kod o jeden większy - stąd to wynika. Zobacz sobie tablicę kodów ASCII, np: http://www.ecs.csun.edu/~cputnam/Comp30 ... ersion.htm
Pozdrawiam, Maciek Antonik
Edu4Industry
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Problem z bloczkiem NUmber to hexadecimal string

Post autor: limatorek »

kurcze to jak to po ludzku zamienić ? stringów odejmować nie można bo bym odejmował 30 od każdego, już to chciałem zrobić ale nic z tegosz? Chodzi mi o to ze wysyłam to po RS te dane. I muszę mięc to w hexie. Jak chcę wysłać liczbę 3 on w rzeczywistości wyśle mi 33 a nie 3.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Problem z bloczkiem NUmber to hexadecimal string

Post autor: jogurt_owocowy »

Nowszy pisze:Wynika to z tego, że znak '0' ma w ASCII kod właśnie '30'
Trochę się zapędziłeś się, bo funkcja Number To Hexadecimal String nie zamienia wejściowej liczby na kod ASCII, tylko na jej zapis heksadecymalny, więc zero na wejściu ma dać zero na wyjściu.
limatorek pisze:zamieniam liczbę typu double równą 0 na jego wyjściu mam 30, gdy zamieniam liczbę typu double równą 8 na jego wyjściu mam 38
Nie uwierzę, dopóki nie zobaczę (diagramu).
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Re: Problem z bloczkiem NUmber to hexadecimal string

Post autor: limatorek »

Wiec pokazuje
Załączniki
wynikkkk.png
smiglo
Posty: 110
Rejestracja: 18 sty 2006 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Bydgoszcz

Problem z bloczkiem NUmber to hexadecimal string

Post autor: smiglo »

1. Funkcją Number To Hexadecimal String nie można zamienić liczby rzeczywistej na stringa (t.zn. można ale zostanie zaokrąglona do liczby całkowitej). Należy użyć Number To Fractional (lub exponential) String.
2. Wg mnie wszystko jest ok, bo problem w programie polega na tym, że włączony jest tryb wyświetlania stringa jako Hexadecimal i dlatego właśnie zero to 30 (dokładnie kod ASCII) - 10 (heksadecymalnie, czyli 16 dziesiętnie) byłoby wyświtlone jako 3130 (czyli kody ASCII cyfr '1' i '0'). Należy włączyć normal display.
Ostatnio zmieniony 13 mar 2011 19:11 przez smiglo, łącznie zmieniany 1 raz.
smiglo
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Problem z bloczkiem NUmber to hexadecimal string

Post autor: limatorek »

No dobrze ale jak to wysłać teraz na port Rs, żeby wysłać dobrą daną? Visa write wysyła mi znak ASCI na port czy hex ?? Jak wysyłam string typu hex tzn. dam sobie stałą tam bez zamieniania liczby to ładnie mi wysyła i uC odbiera tą wpisaną daną którą chcę wysłać. Jeżeli ja teraz chcę wysłać jakąś zmienną double to on wysyła dziwne rzeczy, czyli jak inaczej zamienić liczbę na hex string jesli nie bloczkiem number to hexadecimal string bo ja nei wiem?
smiglo
Posty: 110
Rejestracja: 18 sty 2006 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Bydgoszcz

Re: Problem z bloczkiem NUmber to hexadecimal string

Post autor: smiglo »

To zależy czego oczekuje odbiornik; ramką RS można wysłać 8 bitów danych, które można traktować jako wartość liczbową (czyli maksymalnie FF) lub jako jeden znak ASCII. Stawiam raczej, że uP, z którym się komunikujesz oczekuje liczb wysyłanych w postaci znaków ASCII (np. wysyłamy liczbę 3,8 to potrzebne są 3 ramki danych 33 2C 38, gdzie 2C to przecinek). W tym wypadku w odbiorniku zamieniamy stringa na wartość liczbową. Traktowanie odebranych wartości jako liczby ma miejsce głównie w sytuacjach kiedy zależy nam na szybkim przesłaniu informacji, tak z grubsza... I wtym wypadku w LV wartość liczbową i tak trzeba zamienić na stringa przed wysłaniem (w Visie na wejścia podajemy wyłącznie stringi).
smiglo
smiglo
Posty: 110
Rejestracja: 18 sty 2006 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Bydgoszcz

Re: Problem z bloczkiem NUmber to hexadecimal string

Post autor: smiglo »

W załączniku zamiana wartości liczbowej (całkowitej) na stringa (1 liczba (max. 255) - 1 ramka RS). Mam nadzieję, że nie namieszałem.
Załączniki
konw.JPG
konw.JPG (3.92 KiB) Przejrzano 9855 razy
smiglo
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Problem z bloczkiem NUmber to hexadecimal string

Post autor: limatorek »

Dzięki Smiglo, Twój przedostatni post mi pomógł właściwie. Muszę procka nauczyć konwersji ASCI na liczbę. Dzięki
ODPOWIEDZ