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



Teraz jest 28 mar 2024, o 17:48


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
 Tytuł: Parsowanie NMEA
PostNapisane: 7 gru 2017, o 00:23 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Witam
Jakim sposobem parsować tyle dużo danych z GPS.
$GPGGA,,,,,,0,00,99.99,,,,,,*48
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,4,1,13,01,,,24,05,,,21,08,,,22,10,,,25*71
$GPGSV,4,2,13,14,,,23,15,,,22,16,,,20,21,,,21*78
$GPGSV,4,3,13,23,,,24,26,,,23,27,,,23,28,,,26*74
$GPGSV,4,4,13,29,,,22*70
$GPGLL,,,,,,V,N*64
$GPRMC,,V,,,,,,,,,,N*53
$GPVTG,,,,,,,,,N*30

Mie interesuje $GPGGA jak to zdanie rozpoznać z pomiendzy ostatnich i ułożyć do bufora?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2017, o 01:03 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 03 gru 2014
Posty: 18
Pomógł: 3

O parsowaniu danych z GPS tutaj było:
http://forum.atnel.pl/topic11972.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2017, o 21:08 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Coś takiego próbuje ale zadziała to i na inne zdanie

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2017, o 23:00 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Zrobiłem coś takiego i działa ale jak nie nadlecą wszystkie dane to mi się wyświetla suma kontrolna.Co z tym można zrobić ?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2017, o 23:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 wrz 2013
Posty: 74
Lokalizacja: Sierakowice/Gdańsk
Pomógł: 9

Problemem jest to że funkcja strtok_r() której używasz, w przypadku gdy pola danych pomiędzy separatorami "," są puste, nie działa w taki sposób jak założyłeś. Gdy w zdaniu występują przecinki obok siebie to owa funkcja potraktuje te wszystkie przecinki tak jakby był tylko jeden przecinek. Też kiedyś miałem taki sam problem z tą funkcją. Rozwiązałem to poprzez napisanie własnej funkcji która działa podobnie do strtok() i wykrywa wszystkie pola nawet gdy ich nie ma ;). Możesz pokombinować z napisaniem własnej funkcyjki, a jak chcesz to wrzucę tu moje rozwiązanie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2017, o 00:14 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

W Yellowbooku

http://atnel.pl/wkuwamy-c-majsterkuj.html

pokazywałem taką funkcję i inne różnie ciekawostki ;)

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

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2017, o 21:06 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Funkcja by była dobra ale potrzebowałbym widziec ja jej uzyć bo chyba nic nie wymyśle.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2017, o 23:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 wrz 2013
Posty: 74
Lokalizacja: Sierakowice/Gdańsk
Pomógł: 9

Wrzucam fragment biblioteki gdzie parsuję sentencję GPGGA.

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


A tu implementacja funkcji która zastępuje strtok().
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Funkcja mirka jest bardziej uniwersalna. Moją funkcję pisałem specjalnie na potrzeby parsowania NMEA.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2017, o 23:09 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

wojtekr51 napisał(a):
A tu implementacja funkcji która zastępuje strtok().

Tyle, że no ona nie do końca zastępuje strtok - w ogóle nie ma wyboru rodzaju separatora. Separatorem jest na sztywno pojedynczy znak przecinka. Polecam się zainteresować funkcją, którą pokazałem wyżej bo ta rzeczywiście zastępuje strtok - 1:1

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



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: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 10 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO