mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik GPS Datenschrott aussortieren


Autor: Alexander Boltz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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(...).

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Philipp Karbach (Gast)
Datum:

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

Autor: Ralf (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.