Forum: Mikrocontroller und Digitale Elektronik GPS Datenschrott aussortieren


von Alexander Boltz (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe vor, GPS-Daten zu speichern, die immer wie folgt per UART 
reinkommen:
*boese = Usart_Rx();

Die Daten sehen so aus:
$GPGSA,A,3,02,04,05,14,30,,,,,,,,03.6,02.9,02.1*0A
$GPGSV,2,1,05,02,33,070,43,04,14,035,40,05,66,093,46,14,26,240,35*72
$GPGSV,2,2,05,30,85,057,47,,,,,,,,,,,,*43
$GPRMC,163411,A,5150.3752,N,00639.0283,E,000.0,000.0,170807,,,A*7E
$GPGGA,163412,5150.3752,N,00639.0286,E,1,05,02.9,00009.1,M,046.9,M,,*4E
Und das pro Sekunde...
So jetzt benötige aber nur Daten, die mit
$GPGGA beginnen.

Habe dazu zuersteinmal erucht in Visual C ein Programm zu schreiben 
(siehe Anhang), wenn es denn dort klappt setze ich es in C um für den 
µC...

Doch leider funktioniert es auf dem PC schon nicht so recht, wie es 
soll..

Wre dankbar für jeden Tipp, der mich in die richtige Richtung lenkt!

von Christian (Gast)


Lesenswert?

Ich würde das folgendermaßen lösen:

Daten zeilenweise einlesen, d.h. Daten byteweise vom USART abholen, bis 
ein CR oder LF kommt. Dann hast Du immer nur eine Zeile im Buffer. Und 
statt der verschachtelten IF-Abfragen würde ich mir mal strncmp(...) 
angucken und wenn Du die Daten in einen anderen Puffer übernehmen 
möchtest, strcpy(...) bzw. strncpy(...).

von Spess53 (Gast)


Lesenswert?

Hi

In deinem Beispielstring fehlen die Zeilenendezeichen <CR><LF>, mit 
denen jeder NMEA-String abgeschlossen wird.
Da ich so etwas bisher nur mit Delphi bzw Assembler programmiert habe, 
kann ich dir auch nicht direkt weiterhelfen.
An deiner Stelle würde ich warten bis ein '$' empfangen wird. Dann den 
String einlesen. Überprüfen ob der String mit '$GPGGA' anfängt und die 
Daten verwerten oder verwerfen.

MfG Spess

von Philipp Karbach (Gast)


Lesenswert?

mit strstr kann man in einem char array nach einer zeichenkette suchen, 
wenn du nach $GPGGA suchst solltest es true zurückgeben wenn sich eben 
das in deinem string befindet!

von Philipp Karbach (Gast)


Lesenswert?

edit: bzw. er gibt den rest der zeichenkette zurück, also genau dass, 
was du willst und brauchst!

von Ralf (Gast)


Lesenswert?

die meisten gps Module kann man konfigurieren, dass sie zum Beispiel nur 
den $GPGGA - Teil senden. Damit ist schon fertig sortiert ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.