Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 23 lut 2025, o 00:30


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 18 kwi 2017, o 21:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 maja 2016
Posty: 42
Pomógł: 0

Witajcie! Mam problem z parsowaniem danych tzn nie wiem jak z danych nadlatujących z bluetootha wysyłanych przez program wyciągnąć dwie liczby float i dwie komendy. Korzystam wprawdzie z Arduino ale tylko dlatego że na zestaw Atb jeszcze mnie nie stać poza tym zestawu nie włożę do robota ktorego zrobiłem. Ale do rzeczy. Otrzymuję dane w postaci:

CS;CJ,0.158,-0.449;CJ,0.057,-0.998;CJ,0.054,-0.999;

i teraz tak CS - to stop
CJ to jazda
po CJ są zawsze dwie liczby niestety w formacie FLOAT, oddzielone przecinkiem a następnie średnik.

Tak naprawdę to wystarczy mi wydobyć te dwie liczby tylko żebym wiedział która jest pierwsza a która druga.

jeśli napisałem nieprecyzyjnie to tak dostajemy albo:

;CS;


albo

;CJ,0.158,-0.449;

Proszę o podpowiedź, jak podejść do tematu najlepiej bez "magicznych" funkcji arduino tylko tak po naszemu, w C.
p.s. nie wiedziałem jakiego znacznika mam użyć tu na forum do wstawienia danych?

To co robię nie jest żadną tajemnicą, prosty robot a program z którego korzystam do wysyłania danych to darmowe BALANDUINO.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2017, o 21:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2014
Posty: 293
Lokalizacja: Jaskółowo k. Warszawy
Pomógł: 9

Cześć. A jakbym Ci powiedział żebyś nie patrzył na ten ciąg jak na liczby a string.
Druga podpowiedź: twoimi separatorami będą "," "." ;

Wysłane z mojego SM-G357FZ przy użyciu Tapatalka


Autor postu otrzymał pochwałę

_________________
POZDROWIONKA



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2017, o 22:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 maja 2016
Posty: 42
Pomógł: 0

PITERK, to są liczby float, czyli 4 bajty i z kropką w zapisie i właśnie zapomniałem dodać że one mają max wartość 1, stąd te kropki.
Hmmm czegoś może jeszcze nie wiem próbowałem to wczytać do bufora ale dalej się trochę gubię. Mój pomysł był taki aby znależć sekwencję "CJ," a dalej 4 bajty to liczba float, póżniej przecinek i następne 4 bajty float. W teorii wszystko ok ale... Dobra jutro wrzucę mój kod który nie działa ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 kwi 2017, o 08:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 maja 2016
Posty: 42
Pomógł: 0

Obiecałem że wstawię moje wypociny-oto one:

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 kwi 2017, o 13:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 maja 2016
Posty: 42
Pomógł: 0

Dalszy ciąg zabawy z parsowaniem, i z tym co i jak. Koledzy, dziękuję za pomoc. Wychodzi moje niedouczenie, PITERK, poczytałem w greenbooku o transmisji ASCII i już widzę kolejnego babola jakiego zrobiłem. Przecież wszystko idzie w postaci znaków ascii więc faktycznie jest tak jak napisałeś o separatorach. Dalej czytam i walczę z kodem chociaż czasu troszkę mało więc pewnie potrwa jeszcze kilka dni. Jak coś wymyślę takiego aby działało to wstawię na forum kod może ktos skorzysta.
Na tą chwilę mam tak:

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



bufor dałem mniejszy bo korzystam z software serial aby w serialu hardwarowym mieć podgląd tego co się dzieje w programie, optymalizacji nie ma żadnej bo chcę aby zaczeło działać cokolwiek, później będzie czas na porzadki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 kwi 2017, o 18:28 
Offline
Użytkownik

Dołączył(a): 19 paź 2014
Posty: 357
Lokalizacja: stolyca pyrlandii :)
Pomógł: 18

Powiem Ci tak, jakiś czas temu miałem podobny problem i mi bardzo pomogły poradniki Mirka "Wifi-Uart". Niestety nie mogę znaleźć tamtego mojego kodu, ale w oparciu tylko o tamte poradniki udało mi się wtedy to zrobić.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 kwi 2017, o 08:30 
Offline
Nowy

Dołączył(a): 26 lut 2014
Posty: 21
Pomógł: 2

Jezeli uzywasz arduino, toma ono yaka fajna funkcje ktora nazywa sie strtok(). Za pomoca niej ja parsuje url z ethernetu.

Wysłane z mojego HTC Desire 510 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 kwi 2017, o 09:40 
Offline
Użytkownik

Dołączył(a): 23 kwi 2016
Posty: 58
Pomógł: 9

jerzyk31 a co w C tej funkcji nie ma?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 kwi 2017, o 16:39 
Offline
Nowy

Dołączył(a): 26 lut 2014
Posty: 21
Pomógł: 2

@Cam74 - jest, masz rację :D mea culpa, maxima culpa ;)

dla autora :) https://www.tutorialspoint.com/c_standa ... strtok.htm


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2017, o 19:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 maja 2016
Posty: 42
Pomógł: 0

Koledzy, na obecną chwilę poradziłem sobie tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i ten kod już działa, jeszcze tylko przemyślę sterowanie i będzie ok. Bardzo dziękuję za pomoc wszystkim którzy pisali do mnie :).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO