Suche NMEA Parser für AVR

Gast #2641144
Lesenswert?

Hallo zusammen,

Ich suche nun schon ein paar Tage das Netz durch und habe diverses hier 
im Forum gelesen... Aber ich scheine irgenwie Tomaten auf den Augen zu 
haben:

Ich suche einen kleinen NMEA Parser, dem ich eigentlich nurnoch die 
Bytes vom GPS Empfänger hin werfen muss und mir dann ein Struct mit 
daten wie Position, Geschwindikeit, Kurs etc füllt und zur Verfügung 
stellt. Aber obwohl hier sehr viele Leute mit GPS am Avr arbeiten, hat 
keiner eine einfache Lib parat, die diese Aufgabe erfüllt.

Super wäre ein relativ schlankes System, als OpenSource.

Hat jemand vielleicht einen guten Tipp für mich?

Mein Sensor spricht reines NMEA 183, kein Sirf oder ähnliches.


Vielen Dank und viele Grüße,
Timo
Gast #2641297
Lesenswert?

Hi

>Da widerspricht sich was:

>GGA Latitude: (Seite5)
>Das Beispiel ist        :   .. ,3723.2475, ..
>und in der Tabelle steht:      dddmm.mmmm
>Das Bsp hat nur vier Stellen vor dem Punkt..

Es gibt keine führenden Nullen.

MfG Spess
Gast #2641303
Lesenswert?

>Es gibt keine führenden Nullen.

Warum nicht? Woran soll man erkennen, was das Bedeutet?

In dem selben Beispiel, bei sattelites used, gibt es die doch auch.

Oder Beispiel:

Uhrzeit: 12345.123

WIe spät ist es?
1:23:45
12:03:45
12:34:05

???

EDIT:

Weiter, Latitude:  102.9876
ergibt?
10° 2.9876'
1° 02.9876'

???
(Firma: MicroForge) #2641315
Lesenswert?

Hm, meine Frage war scheinbar blöd formuliert.

Ich kann durchaus programmieren, allerdings ist die Anzahl an 
Komponenten die mein Projekt umfasst (quatrokopter und andere 
Fluggeräte) zu groß um sich um jede Standard Kompontente im Detail zu 
kümmern. Ich habe die letzten Tage Informatione über alles gesammelt. 
Insbesondere viel über Antennendesign und GPS grundsätzlich gelesen und 
nebenbei versucht einen Parser zu finden, der die Aufgabe erledigen 
kann.

Die Stanfort Lib beispielsweise läuft bei mir nicht! es werden schlicht 
die Zahlen aus dem Beispiel-Teststring nicht erkannt, und das obwohl ich 
sie testweise am PC implementiet habe. Viele GPS Logger hier im Forum 
und im Wiki arbeiten nicht mit einem Parser, sonder speichern lediglich 
den kompletten Stream auf eine SD Karte. Damit ist das auch nicht was 
ich will...

Danke an Chris für die beiden Links! Speziel den unteren kannte ich noch 
nicht. Ich werde da mal rein schauen und wenn das auch nicht geht, 
schreib ich das Ding halt selbst. Schade, dass man das Rad manchmal doch 
neu erfinden darf.


Danke nochmal und Gruß
Timo
Gast #2641354
Lesenswert?

Hi

>1° 02.9876'

>Ich denke es gibt keine führenden Nullen?

Es steht doch auch keine Null am Anfang des Strings. Du musst z.B. 
'dddmm.mmmm' wie eine Maske über den String legen so das der Punkt 
übereinstimmt.

Ein String mit dem Field Type dddmm.mmmm fängt nicht mit einer Null an, 
außer dddmm ist Null. Der Punkt ist immer vorhanden. mmmm hört nicht mit 
einer Null auf, außer mmmm ist Null.

>Wie wird die Uhrzeit Mitternacht dargestellt?

0.0.

MfG Spess
Gast #2641365
Lesenswert?

Also wenn das mm von 'mm.mmmm' Null ist, dann sieht das so aus:
falls d>0 : (d)d00.xxxx    d: Grad
sonst            0.xxxx

???


>0.0.

Keine Std und keine Min, weil Null?


Warum dann führende Nullen bei sattelites used und bei station id ?
Gast #2641376
Lesenswert?

Oder anders formuliert:

hhmmss ist eigentlich eine Zahl, gebildet durch
  10000h
+   100m
+      s

und das ohne führende Nullen.

Genauso das dddmm:
 100d
+   m
wobei hier noch zusätzlich gilt: m<60

???
Gast #2641380
Lesenswert?

Hi

Vergiss meine Aussagen. War Müll. In dem von mir verlinktem Dokument ist 
ein Fehler. Die Latitude hat nicht das Format dddmm.mmmm sondern 
ddmm.mmmm (0..90°). Und diese Strings haben eine konstante Länge.

MfG Spess
Gast #2641383
Lesenswert?

Timo Birnschein schrieb:
> Ist es nicht schon offensichtlich geworden - und das ohne mein Zutun -
> warum das nicht einfachste Textverarbeitung ist... ;)

Ja. Ich greif mir die ganze Zeit an den Kopf. Warum dieser sinnlose 
Aufwand, die Nullen zu unterdrücken. Diese fehlenden Stellen erzeugen 
dann wieder jede Menge Aufwand beim zurückrechnen..

Man kann nur den Kopf schütteln
Gast #2641384
Lesenswert?

>Vergiss meine Aussagen. War Müll. In dem von mir verlinktem Dokument ist
>ein Fehler. Die Latitude hat nicht das Format dddmm.mmmm sondern
>ddmm.mmmm (0..90°). Und diese Strings haben eine konstante Länge.

Puh. Gott sei Dank.

Also ist Mitternacht 000000.0000

und die geogr. Position 0/0 wird als
 0000.0000 LAT
und
00000.0000 LON

dargestellt?


(bitte ein ja ;-)
Gast #2641427
Lesenswert?

>Sorry, Matthias.

Warum?


>Das hab ich gerade noch gesehen:
>http://www.maartenlamers.com/nmea/

Da steht:
>>$GPGGA,082804.683,5205.9421,N,00506.4368,E,1,03,3.0,0.3,M,,,,0000*01
>>$GPRMC,082804.683,A,5205.9421,N,00506.4368,E,0.02,146.61,190408,,*0C
>>$GPBDG,082804.683,A,52.09904,5.10728,0.02,146.61,1,190408,*73

Das sieht eindeutig nach führenden Nullen, also konstanter Länge aus.
Oder das Feld ist leer.

Somit sollte der Ansatz im ANhang funktionieren. Und sogar schneller
sein als die vielen String/real Funktionen hier:
>http://git.savannah.gnu.org/cgit/gpsd.git/tree/dri...
Angehängte Dateien:
(Firma: MicroForge) #2641443
Lesenswert?

Moin!

Das hier ist ein Test-Datensatz aus der lib hier: 
http://nmea.sourceforge.net

1
    const char *buff[] = {
2
        "$GPRMC,173843,A,3349.896,N,11808.521,W,000.0,360.0,230108,013.4,E*69\r\n",
3
        "$GPGGA,111609.14,5001.27,N,3613.06,E,3,08,0.0,10.2,M,0.0,M,0.0,0000*70\r\n",
4
        "$GPGSV,2,1,08,01,05,005,80,02,05,050,80,03,05,095,80,04,05,140,80*7f\r\n",
5
        "$GPGSV,2,2,08,05,05,185,80,06,05,230,80,07,05,275,80,08,05,320,80*71\r\n",
6
        "$GPGSA,A,3,01,02,03,04,05,06,07,08,00,00,00,00,0.0,0.0,0.0*3a\r\n",
7
        "$GPRMC,111609.14,A,5001.27,N,3613.06,E,11.2,0.0,261206,0.0,E*50\r\n",
8
        "$GPVTG,217.5,T,208.8,M,000.00,N,000.01,K*4C\r\n"
9
    };

Da sind durchaus auch führende Nullen zu finden. Allerdings schmiss der 
Parser bei mir komische Zahlen raus, die ich aber auch falsch 
interpretiert haben könnte.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren