Forum: PC-Programmierung [C] NMEA -> KML - Kommandozeilentool


von Fabio W. (modellbauer)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich möchte mir ein Kommandozeilentool programmieren, mit dem ich auf 
SD-Karte gespeicherte NMEA-Daten in eine KML-Datei 'übersetzen' kann.
Die NMEA-Daten kommen direkt von einem GPS-Modul und der AVR schiebt sie 
durch auf die SD-Karte. Dann soll halt dieses Tool drüberlaufen und mir 
am Ende eine KML-Datei erzeugt haben.

Dazu habe ich bereits einen NMEA-Parser programmiert. Der Quellcode dazu 
befindet sich im Anhang. Prinzipiell macht es erstmal nichts anderes, 
als ein struct immer mit den gerade eingelesenen Daten aus einem 
NMEA-String upzudaten.
Das funktioniert soweit auch erstmal einigermaßen.

Allerdings würde ich gerne wissen, ob das so mehr oder weniger sauber 
programmiert ist, oder totaler Schrott? Wie programmiert man soetwas am 
schönsten?

Zudem habe ich ein Problem, wenn ich zum Beispiel einen GPGSA-Datensatz 
einlese. Wenn nämlich zwischen den Kommata keine Zahl steht, dann 
scheint sscanf ein Problem damit zu haben. So wird beispielsweise 
folgender Datensatz
1
 $GPGSA,A,3,02,04,27,30,,,,,,,,,4.0,2.0,3.5*32
 wegen der 'leeren' Datenfelder nicht korrekt gelesen.
Wie könnte ich es hinbekommen, dass sscanf auch mit diesen inexistenten 
Daten die drei Genauigkeiten am Ende (PDOP, HDOP, VDOP) korrekt einliest 
(möglichst nur mit sscanf, ohne strtok)?


Nun aber zu dem eigentlichen Problem: Ich habe keine Ahnung, wie man 
jetzt sauber eine KML-Datei aus den gewonnen Daten erzeugt. Wie 
programmiert man soetwas 'schön'?
Die 3-Funktionen-Methode (mit add_beginning(), add_coordinate(), 
add_ending(), also die ganzen öffnenden Tags schreiben, dann Placemark 
für Placemark hinzufügen, und alle Tags wieder schließen) halte ich für 
unelegant.
Im Anhang befindet sich auch schonmal eine KML, wie es so ungefähr 
aussehen soll.

Vielen Dank schonmal.

Modellbauer

von ganzegal (Gast)


Lesenswert?

Vielleicht nicht, was Du hören willst, aber C ist für eine solche 
Aufgabe eine unnötige Verrenkung. Ich würde das in einer der vielen 
Skriptsprachen implementieren.

von Rolf M. (rmagnus)


Lesenswert?

Vielleicht noch was, das du nicht höhren willst, aber warum benutzt du 
nicht einfach gpsbabel?

von Fabio W. (modellbauer)


Lesenswert?

ganzegal schrieb:
> Vielleicht nicht, was Du hören willst, aber C ist für eine solche
> Aufgabe eine unnötige Verrenkung. Ich würde das in einer der vielen
> Skriptsprachen implementieren.

Nein, will ich nicht wirklich hören ;)
Das ganze soll auch ein bisschen dazu da sein, das in Info1 gelernte, 
anzuwenden, und da haben wir nun mal eben C und nicht irgendwelche 
Skriptsprachen gelernt. Außerdem empfinde ich persönliche Abneigung 
gegenüber eben solchen.

Rolf Magnus schrieb:
> Vielleicht noch was, das du nicht höhren willst, aber warum benutzt du
> nicht einfach gpsbabel?

Okay, sieht ganz interessant aus, und ich werde es mir mal genauer 
ansehen, aber letztendlich war es dann mit dem Lerneffekt auch nicht so 
wie ich mir das dachte ;)

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.