Problem z bloczkiem NUmber to hexadecimal string
Problem z bloczkiem NUmber to hexadecimal string
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.
- Nowszy
- Posty: 504
- Rejestracja: 30 maja 2008 08:33
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Katowice
- Kontakt:
Problem z bloczkiem NUmber to hexadecimal string
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
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
Edu4Industry
Problem z bloczkiem NUmber to hexadecimal string
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.
- 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
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.Nowszy pisze:Wynika to z tego, że znak '0' ma w ASCII kod właśnie '30'
Nie uwierzę, dopóki nie zobaczę (diagramu).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
-
- Posty: 110
- Rejestracja: 18 sty 2006 00:00
- Wersja środowiska: LabVIEW 2010
- Lokalizacja: Bydgoszcz
Problem z bloczkiem NUmber to hexadecimal string
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.
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
Problem z bloczkiem NUmber to hexadecimal string
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?
-
- Posty: 110
- Rejestracja: 18 sty 2006 00:00
- Wersja środowiska: LabVIEW 2010
- Lokalizacja: Bydgoszcz
Re: Problem z bloczkiem NUmber to hexadecimal string
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
-
- Posty: 110
- Rejestracja: 18 sty 2006 00:00
- Wersja środowiska: LabVIEW 2010
- Lokalizacja: Bydgoszcz
Re: Problem z bloczkiem NUmber to hexadecimal string
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 (3.92 KiB) Przejrzano 9851 razy
smiglo
Problem z bloczkiem NUmber to hexadecimal string
Dzięki Smiglo, Twój przedostatni post mi pomógł właściwie. Muszę procka nauczyć konwersji ASCI na liczbę. Dzięki