Wysyłanie dancyh do uC
Wysyłanie dancyh do uC
Witam. Panowie mam problem z wysyłaniem danych do uC i wymiękam już przy tym. Poniżej obrazek w jaki sposób realizuję wysyłanie danych. Używam bloczka Concatenate string, Wpisuje najpierw (stałą 783D) dane1 (stała 2020 793D) dane2. I tak w liczbie d2 gubi jakiś jej kawałek, zazwyczaj nie wyświetla mi w niej przecinku np. 783D 312C 30 2020 793D 2D33 2C31 . Pierwsza czyli dana1 jest wysyłana dobrze, natomiast dana2 jest niepełna gubi jej kawałek. Co to może być Cocnatenate string coś psuje? Jak inaczej łączyć stringi?
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Wysyłanie dancyh do uC
Gdzie gubi ten kawałek i co to za kawałek (jakaś konkretna liczba bajtów)? Po Concatenate Strings masz jakieś błędne dane (jeszcze przed wysłaniem) czy na samym uC czegoś brakuje? Napisz jasno, co chcesz wysłać, co rzeczywiście wchodzi na wejście Visa Write i co dostajesz na uC.
Wysyłanie dancyh do uC
Kawałek jest gubiony na mikroprocesorze, chcę mieć w uC, a konkretnie na lcd wyświetlone x= dan1 y=dana2. Więc robię na początku stały łańcuch 78 3D to jest (x=) potem są dane z pomiarów tak jak na rysunku, następnie 2xspacja - 20 20 oraz 79 3D (y=) i kolejna dana z pomiaru zamienianie bloczkiem number to fractional string. Na wisa write idą dobre dane bo podglądam je po złączeniu a przed wysłaniem i jest OK. Natomiast w procesorze gubiony jest przedostatni znak zazwyczaj przecinek - 2C w ASCI. W procesorze używam funkcji sprintf do zamiany hexa na znak ASCI. Przykłady z testów
wysyłam 783D 302C 3620 2079 3D32 2C36 dostaję wszystko ok
wysyłam 783D 302C 3020 2079 3D2D 362C 30 dostaję 783D 302C 3020 2079 3D2D 36 30
wysyłam 783D 302C 3320 2079 3D2D 362C 32 dostaję 783D 302C 3320 2079 3D2D 36 32
wysyłam 783D 372C 3620 2079 3D31 332C 33 dostaję 783D 372C 3620 2079 3D31 33 33
zazwyczaj nie mam przecinka - 2C w drugiej liczbie dana2, takie coś się dzieje
wysyłam 783D 302C 3620 2079 3D32 2C36 dostaję wszystko ok
wysyłam 783D 302C 3020 2079 3D2D 362C 30 dostaję 783D 302C 3020 2079 3D2D 36 30
wysyłam 783D 302C 3320 2079 3D2D 362C 32 dostaję 783D 302C 3320 2079 3D2D 36 32
wysyłam 783D 372C 3620 2079 3D31 332C 33 dostaję 783D 372C 3620 2079 3D31 33 33
zazwyczaj nie mam przecinka - 2C w drugiej liczbie dana2, takie coś się dzieje
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Wysyłanie dancyh do uC
To na moje oko dzieje się coś takiego: wysyłasz sobie przecinek do proca, a proc chce kropkę ;) A dokładniej sprintf chce kropkę, dlatego na przecinku zatrzymuje się. Musisz zamienić sobie to 2C na 2E i powinno być dobrze.
Wysyłanie dancyh do uC
No być może, że to pomoże ale jak ja bezpośrednio z liczby double to ciągnę i tam jest przecinek anie kropka to jak mam zamienić przecinek na kropkę?
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Wysyłanie dancyh do uC
Użyj bloczka Search And Replace String. Alternatywnie możesz zmienić sobie ustawienia systemowe - zamienić przecinek na kropkę gdzieś w ustawieniach regionalnych (pod Win). Domyślnie bloczek Num To Fract String korzysta właśnie z systemowego znaku. To rozwiązanie jednak nie jest najlepsze, bo oczywiście pod innym systemem znów się sypnie, więc wracamy do pierwszego zdania tego posta.
Wysyłanie dancyh do uC
Nic to nie pomogło, zamieniłem przecinek na kropkę ale teraz kropki nie wyswietla dla dla drugiej liczby. Pewnie cos mam pomotane w uC, wysłałem teraz dana2 a potem dana1 to dana1 jest teraz bez kropki.