Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe

Tematy związane z LabVIEW pracującym w czasie rzeczywistym.
matiasss
Posty: 16
Rejestracja: 28 sty 2016 17:10
Wersja środowiska: LabVIEW 2014

Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe

Post autor: matiasss »

Witam,

Z mikrokontrolera za pomocą bluetooth przesyłam ciąg znaków np:
,21,15.5,20.3,70,1004.8
Mam problem z rozdzieleniem tego ciągu znaków na typy liczbowe: int oraz double. (kolejne liczby są rozdzielone przecinkami), więc chodzi o rozdzielenie stringa powyżej na:
21
15.5
20.3
70
1004.8

Gdy wysyłałem dwa 'int-y' mogłem rozdzielić te liczby i wyświetlałem je na wykresie. Problem pojawił się, gdy pomiędzy int-y z mikrokontrolera zacząłem wysyłać również typy zmiennoprzecinkowe.(SCREEN 1).
Czy macie może jakiś pomysł na czym się program buntuje?

Drugie pytanie: czy jest możliwość zapisania kolejnych wyników wysyłanych przez bluetooth (rozdzielonych wcześniej na typy liczbowe) do tablicy jak na dolaczonym screenie (SCREEN 2).

Z góry dziękuję za wszystkie komentarze oraz podpowiedzi.

Pozdrawiam,
Mateusz
Załączniki
SCREEN 2
SCREEN 2
2.format zapisu danych pobranych z bluetooth.png (4.13 KiB) Przejrzano 7265 razy
SCREEN 1
SCREEN 1
problem z rozdzieleniem stringa na typ zmiennoprzecinkowy.png (35.36 KiB) Przejrzano 7265 razy
parapampam
Posty: 2
Rejestracja: 17 lip 2015 08:04
Wersja środowiska: LabVIEW 2014

Re: Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe

Post autor: parapampam »

Hej,
Pytanie 1: To jedna z propozycji. Problem pojawi się gdy dostaniesz zły komunikat, np. "4,5.3,,2"

Pytanie 2: Tak jest taka możliwość. Jak to będzie wyglądać w dużej mierze zależy od tego jak rozwiążesz 1 problem.


Pozdrawiam,
Piotrek
Załączniki
rozdzielenie stringa na typy liczbowe(int, duble).png
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe

Post autor: PiDi »

Przyczyną błędu jest sposób formatowania liczb z przecinkiem. Domyślnie, gdy użyjesz po prostu formatu "%f", LabVIEW przyjmuje Twój systemowy znak dziesiętny (domyślnie w polskim Windowsie to przecinek). Można wymusić przecinek albo kropkę, używając odpowiedniego formatu. Ja jeszcze trochę całe rozwiązanie uproszczę: bloczek Spreadsheet String To Array Function załatwia sprawę, a format o którym mówię jest opisany w komentarzu:
format.png
format.png (34.65 KiB) Przejrzano 7247 razy
Do zapisu do pliku pewnie Ci się przyda bloczek Write To Spreadsheet File. To może być pomocne: https://decibel.ni.com/content/docs/DOC-7332
ObrazekObrazekObrazekObrazek
matiasss
Posty: 16
Rejestracja: 28 sty 2016 17:10
Wersja środowiska: LabVIEW 2014

Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe

Post autor: matiasss »

Dziękuje za udzielone odpowiedzi.

Racja, problem pojawiał się przy liczbach zawierających kropki. Zmieniłem format liczb zmiennoprzecinkowych wysylanych przez mikrokontroler. Obecnie ciąg liczb jest w formacie:
;23,3;21,00;22,35;65;1000,4
więc problem z rozdzieleniem liczb rozwiązany.
Jutro zabieram się za zapis odczytywanych wyników do tablicy: docelowo chcę odwoływać się do poszczególnych pomiarów na podstawie czasu, w którym ten pomiar został dokonany.

Pozdrawiam,
Mateusz.
ODPOWIEDZ