Hallo!
Frei nach dem Motto "Software, die die Welt nicht braucht", habe ich ein kleines Tool zum konvertieren von Logfiles im SiRF-binary Format nach NMEA geschrieben, welches ich euch natürlich nicht vorenthalten möchte.
Hintergrund der ganzen Geschichte war eigentlich nur das Sichtbarmachen der MID29 (DGPS Korrekturen), die ja von SiRFDemo nicht ausgewertet wird. SiRFDemo wertet MID27 aus, welche aber von manchen SiRF-Empfängern nur verstümmelt gesendet wird. SiRFDemo zeigt dann im DGPS-Window sinnfreie und fixe Werte (277m) an. Das Zusammenbasteln der NMEA-Sätze ist eigentlich nur ein Abfallprodukt dieser Nummer, wohl aber ein nützliches...
S2N ist ein Win32 Konsolenprogramm, wird also mit Parametern entweder händisch über die "Eingabeauforderung", eine Batchdatei oder halt von fremden Programmen aus aufgerufen. Es braucht keine Installation und wiegt entpackt auch nur 20kB.
Die Parameter sind "in", "out" und "mode", wobei natürlich "in" der Dateiname eines Logfiles im binären SiRF-Format ist, "out" der Dateiname der Zieldatei.
"Mode" entscheidet über den Inhalt der Zieldatei. Mit "S" wird ein Teil der SiRF-Messages im Klartext in die Zieldatei geschrieben. Hier ein Beispielaufruf.
s2n /in:test.srf /out:test_sirf.txt -mode:s
Der Inhalt von test_sirf.txt sieht dann etwa so aus:
M41,20060730,191608.999,48.0546490,7.6549679,370.83,0.03,1.07,0.8,0.75
M04,01,276,26,43
M04,02,51,27,39
M04,05,101,34,45
M04,06,224,71,39
M04,07,236,7,28
M04,30,80,74,39
M04,25,305,37,43
M04,14,231,15,34
M04,21,179,6,36
M04,00,0,0,0
M04,00,0,0,0
M04,124,161,34,39
M02,4233414,568992,4721252,0.000,0.000,0.000,9,5,6,7,1,30,2,25,14,21,0,0,0
M29,5,-6.365,0.000,0.848
M29,6,-5.308,0.000,0.848
M29,7,-9.236,0.000,0.848
M29,1,-6.204,0.000,0.848
M29,30,-3.931,0.000,0.848
M29,2,-5.887,0.000,0.848
M29,14,-7.194,0.000,0.848
Zugegeben - Mode "S" ist wohl nur was für Hardcore-GPS-Fans (und auch noch nicht fertig)...
Also schnell zu Mode "N".
s2n /in:test.srf /out:test_nmea.txt -mode:n
Der Inhalt von test_nmea.txt sieht dann etwa so aus, wobei das Freizeichen vor dem E in der GGA-Zeile natürlich nicht vorhanden ist (wegen Zwangsumbruch der ForenSoft eingefügt).:
$GPGGA,191608.999,4803.2789,N,00739.2981, E,2,09,0.8,370.83,M,47.9,M,0.8,0000*47
$GPGSA,A,3,05,06,07,01,30,02,25,14,21,,,,1.4,0.8,1.1*3A
$GPGSV,3,1,10,01,26,276,43,02,27,051,39,05,34,101,45,06,71,224,39*7F
$GPGSV,3,2,10,07,07,236,28,30,74,080,39,25,37,305,43,14,15,231,34*72
$GPGSV,3,3,10,21,06,179,36,124,34,161,39*4B
$GPVTG,1.07,T,,M,0.06,N,0.11,K*50
$GPRMC,191608.999,A,4803.2789,N,00739.2981,E,0.06,1.07,300706,,,D*63
Das sieht doch schon ganz anders aus und ist obendrein VisualGPS oder u-Center "verträglich"... ![]()
Ausgewertet werden die SiRF-Messages 2, 4 und 41. Diese sollten eigentlich automatisch im Logfile sein. Wer SBAS anschaltet muß auch MID29 aktivieren (z.B. mit SirfTech), sonst funktioniert das Feld für das Alter der DGPS Korrekturen im GGA-Satz nicht.
Noch ein Wort zu PDOP, HDOP und VDOP in der GSA-Zeile. PDOP und VDOP sind falsch, nur HDOP stimmt. PDOP und VDOP werden im SiRF-Format nicht ausgegeben (zumindest nicht in den Messages 2, 4 oder 41). VDOP ist stellvertretend der EVPE (Estimated Vertical Position Error) in Metern und PDOP ein ausgerechneter Wert
PDOP = ( EHPE + EVPE ) * .75
Man kann also den EHPE (Estimated Horizontal Position Error) leicht rausrechnen. PDOP und VDOP sehen im großen und ganzen ziemlich "echt" aus und sind auf 50.0 limitiert.
Sodele, das wars erstmal. Fehlerberichte und Feedback sind natürlich immer willkommen!
bfn hevo2