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!
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(...).
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
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!
edit: bzw. er gibt den rest der zeichenkette zurück, also genau dass, was du willst und brauchst!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.