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
Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe
Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe
- Załączniki
-
- SCREEN 2
- 2.format zapisu danych pobranych z bluetooth.png (4.13 KiB) Przejrzano 7926 razy
-
- SCREEN 1
- problem z rozdzieleniem stringa na typ zmiennoprzecinkowy.png (35.36 KiB) Przejrzano 7926 razy
-
- Posty: 2
- Rejestracja: 17 lip 2015 08:04
- Wersja środowiska: LabVIEW 2014
Re: Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe
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
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
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe
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:
https://decibel.ni.com/content/docs/DOC-7332
Do zapisu do pliku pewnie Ci się przyda bloczek Write To Spreadsheet File. To może być pomocne:
Problem z rozdzieleniem stringa na typy zmiennoprzecinkowe
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.
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.