Wysyłanie dancyh do uC

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

Wysyłanie dancyh do uC

Post autor: limatorek »

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?
Załączniki
nadawanie.png
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Wysyłanie dancyh do uC

Post autor: PiDi »

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.
ObrazekObrazekObrazekObrazek
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Wysyłanie dancyh do uC

Post autor: limatorek »

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
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Wysyłanie dancyh do uC

Post autor: PiDi »

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.
ObrazekObrazekObrazekObrazek
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Wysyłanie dancyh do uC

Post autor: limatorek »

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ę?
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Wysyłanie dancyh do uC

Post autor: PiDi »

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.
ObrazekObrazekObrazekObrazek
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Wysyłanie dancyh do uC

Post autor: limatorek »

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.
ODPOWIEDZ