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 » 01 kwie 2016 13:18

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
2.format zapisu danych pobranych z bluetooth.png
SCREEN 2
2.format zapisu danych pobranych z bluetooth.png (4.13 KiB) Przejrzano 2078 razy
problem z rozdzieleniem stringa na typ zmiennoprzecinkowy.png
SCREEN 1
problem z rozdzieleniem stringa na typ zmiennoprzecinkowy.png (35.36 KiB) Przejrzano 2078 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 » 01 kwie 2016 14:33

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: 619
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice
Has thanked: 3 times
Been thanked: 3 times

Re: Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe

Post autor: PiDi » 01 kwie 2016 15:51

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 2060 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 » 04 kwie 2016 23:04

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