Strona 1 z 1

Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe

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

Re: Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe

: 01 kwie 2016 14:33
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

Re: Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe

: 01 kwie 2016 15:51
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 7296 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

Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe

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