S2N - SiRF to NMEA Konverter

  • 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

  • Hallo Fans,


    wie ich schon schrieb, gehört s2n zur Kategorie "Software, die die Welt nicht braucht". Aber NULL Downloads bei gut 60 Views und NULL Reaktion ist wirklich etwas "dünn". Ich bilde mir auf dieses kleine Progi wirklich nix ein, denn es war erstmal nur als kleines Tool für mich selbst gedacht. Die NMEA-Geschichte habe ich erst später eingebaut, da die dazu nötigen Informationen 'eh aus den SiRF-Messages "extrahiert" vorlagen. Aber als ich das tat, habe ich schon etwas auf den hier vorhandenenen "Spieltrieb" gehofft. Und natürlich weiß ich was TopTrans kann/macht.


    Aber nicht mal die allseits bekannten "Tester" haben bisher zugeschlagen. Ist euch ein nur 4,02kB großes Zip etwa suspekt? Installiert ihr lieber ein "richtiges" Windows-Programm mit 50MB und etlichen Laufzeitbibliotheken? Führt ihr lieber Makros in Office-Dokumenten aus, als ein kleines Progi in purem "C", welches man sogar noch relativ leicht "von Hand" im Debugger "auseinandernehmen" könnte?


    Nur zur Info: Alfred und Charly hatten schon vor ein paar Tagen die Gelegenheit das Progi zu testen. Beide "leben" noch...


    Bitte versteht dieses Posting nicht falsch. Aber bevor ich das u-blox Format einbaue, KLM-Dateien ausgebe, oder gar ein "richtiges" Windowsprogi mit "Klicken" und so daraus mache,würde ich schon gerne vorher ein paar Reaktionen hören.



    bfn hevo2


    EDIT: Meine Funktastatur "unterschlägt" neuerdings Buchstaben....

    3 Mal editiert, zuletzt von hevo2 ()

  • Hallo hevo2,


    nein, das mit den 0 Downloads stimmt nicht. Eines ist von mir, und ja, ich "lebe" noch. :gap


    Die Problematik an der Geschichte - bei mir wenigstens - ist, dass mir doch noch einiges Grundwissen fehlt. Z.B. die Erklärung der Sirf-Zeilen wäre hilfreich, eine weitere bessere Erklärung der einzelnen Protokolle, die teilweise standard-eingeschaltet, aber auch aus- und zugeschaltet werden können.


    Wir sind gerade dabei, für wichtige übergreifende Artikel, Tools etc. einen "findbaren" Platz zu suchen, zu finden. Ich habe S2N noch nicht dafür vorgeschlagen, denn es ist eben sehr speziell und wenig beschrieben. Dazu wäre nun auch gleich die Frage zu stellen, ob Du nicht als Autor einen Artikel über Sirf-Protokoll schreiben willst mit Einbindung und Erklärung des S2N.


    Und ich selbst bin auch noch nicht weitergekommen, obwohl ich mir schon mehrmals die Protokolle parallel der 303 und der 305 angeschaut habe. Wie gesagt, es fehlen noch Grundlagen, auch ist der Umgang mit SirfTech noch nicht flüssig bei mir. Der Vergleich der beiden Mäuse führte bislang nicht zu sehr viel, denn obwohl sie nebeneinandder liegen, sind die empfangenen Sats recht unterschiedlich, manchmal bekommt die eine auch keinen fix. Aber die 303/305 haben eh schon selbst ihre Eigenarten.


    Nein, man kann nicht sagen, dass Deine Arbeit ganz umsonst gewesen wäre. Was mich stutzig macht ist aber auch schon, es gab bei der EGNOS-Diskussion mal einen User, der mit viel mehr Wissen als bei mir vorhanden mitdiskutierte. Den habe ich nicht mehr gesehen. Vielleicht liegt das aber nur daran, dass immer noch Urlaubszeit ist.


    Und EGNOS näher zu untersuchen, zu verstehen, das war ja eigentlich der Ausgangspunkt.


    Ach ja, ich denke etwas nebenbei auch daran: wäre das Source-File zu bekommen, sofern ich einen vernünftigen kostenlosen C-(C++???) Compiler bekommen könnte? Man hat ja immer auch eigene Vorstellungen, wir könnten uns evtl. da ergänzen. Wie wir überhaupt mal wieder einen persönlichen Treff einplanen sollten.


    In diesem Sinne, vielleicht hilt dieser Aufruf ja auch mit, noch jemand Anderen EGNOS-Neugierigen zu aktivieren.

  • Hallo Charly,


    Zitat

    Original von karomue
    Die Problematik an der Geschichte - bei mir wenigstens - ist, dass mir doch noch einiges Grundwissen fehlt. Z.B. die Erklärung der Sirf-Zeilen wäre hilfreich, eine weitere bessere Erklärung der einzelnen Protokolle, die teilweise standard-eingeschaltet, aber auch aus- und zugeschaltet werden können.


    Der Modus "S" ist - wie schon geschrieben - noch nicht fertig und daher nicht weiter dokumentiert. Diesen Modus könnte man aber kurz so beschreiben: Das wichtigste aus den SiRF-Messages 2, 4, 41 und 29, damit man auch im nachhinein gucken kann, was der Empfänger zu einem bestimmten Zeitpunkt eigentlich empfangen hat. (Ob uns das irgendwann weiterhilft, weiß ich jetzt auch noch nicht.)


    Und hier geht es speziell um MID29, da u.a. in meinem Empfänger (oder in deinem, den du bei unserem Treffen an deinem PDA hattest) nur diese Message für DGPS-Informationen brauchbar oder verwertbar ist. SirfDemo verwendet diese Message nicht, sondern benutzt MID27 für die Anzeige der DGPS-Korrekturen. Daher ist SirfDemo für die Auswertung von Logfiles, die mit deinem oder meinem Empfänger gemacht wurden, aus dem Rennen.


    Leider liefert MID29 nur die PRN, Pseudorange-Korrektur in Meter, die Geschwindigkeit der Pseudorange-Änderung und das Alter der Korrektur. (IOD - "Issue of Data" auch noch, diese Angabe ist aber für uns vollkommen unwichtig.) MID29 wird dann für jeden Sat wiederholt, für den Korrekturen von EGNOS empfangen wurden. Im Log-Ausschnitt oben waren es also gerade sieben SVs.


    MID29 bleibt uns leider die Antwort schuldig, ob sich EGNOS im Testbetrieb befindet oder nicht, bzw. sagt nichts zu den anderen netten Dingen, die u-Center so "ausplaudert". Ich muß mal schauen, was man noch alles an nützlichen Infos einem SiRF-Chip "aus der Nase ziehen" kann.





    Zitat

    Original von karomue
    Wir sind gerade dabei, für wichtige übergreifende Artikel, Tools etc. einen "findbaren" Platz zu suchen, zu finden. Ich habe S2N noch nicht dafür vorgeschlagen, denn es ist eben sehr speziell und wenig beschrieben. Dazu wäre nun auch gleich die Frage zu stellen, ob Du nicht als Autor einen Artikel über Sirf-Protokoll schreiben willst mit Einbindung und Erklärung des S2N.


    Ich weiß nicht so recht, ob es sinnvoll wäre einen solchen Artikel zu schreiben. Denn die Leute, die sich das Thema überhaupt "antun" würden, sind eh "GPS-Insider", können höchstwahrscheinlich (auch) programmieren und brauchen daher sicher nicht mehr als das PDF von SiRF, um das Protokoll zu verstehen oder auseinandernehmen zu können. Das selbe gilt für das binäre u-blox Format. Ich persönlich halte das für "Eulen nach Athen tragen" und einen Mini-Programmierkurs wollen wir doch sicher nicht veranstalten.






    Zitat

    Original von karomue
    Ach ja, ich denke etwas nebenbei auch daran: wäre das Source-File zu bekommen, sofern ich einen vernünftigen kostenlosen C-(C++???) Compiler bekommen könnte?


    Hab ich dir nicht schonmal LCC-Win32 oder OpenWatcom vorgeschlagen? OpenWatcom wollte ich eh schon lange mal ausprobieren, bin bisher aber noch nicht dazu gekommen.



    Von mir aus schicke ich dir den Quelltext, aber du kennst ja hoffentlich den alten Spruch: "Es ist schon schwer genug ein Programm zu schreiben. Dann auch noch den Quelltext mit Kommentaren versehen zu müssen, damit andere wissen um was es eigentlich geht, geht eindeutig zu weit!" ;) Okay, ich werd für dich mal ein paar Kommentare einfügen... *Mann, hab ich eine Lust dies zu tun*



    bfn hevo2


  • Also wenn Du das überhaupt tun willst, dann natürlich erstmal ohne weiteren Aufwand.


    Und ja, ich weiß, dass es manchmal nahezu unmöglich ist, Programme eines anderen zu interpretieren. Deshalb ja auch zunächst ohne weiteren Aufwand. Sollte ich damit einigermaßen zurechtkommen, ist später immer noch Zeit. Und es bedeutet ja immer auch, dass ich damit was mache, da sieht es momentan zeitlich auch nicht so toll aus.


    Zum evtl. Artikel: ich hatte ja vor rund 3 Jahren FirstStep angefangen. Dabei ging es in erster Linie nicht unbedingt darum, den Artikel hier anzubieten sondern darum, für mich ein Nachschlagewerk zu schaffen, da ich es leid war, immer wieder in verschiedenen Unterlagen die Protokollfelder nachzuschlagen. Nachdem es über meine HP erreichbar und hier bekannt war, ist es offenbar doch gut aufgenommen worden und gilt als "Anfänger-Pflichtlektüre". Ein Zusammenschreiben des Pendants auf Sirfebene wäre evtl. schon interessant, da ja Sirf wegen der EGNOS-Informationen an Bedeutung gewinnen sollte. Und ganz allgem. über Sirf mehr Infos abrufbar sind als über NMEA.


    Nun gut, es ist Arbeit es zu recherchieren, als Konzept zu schreiben und dann noch in dieses cms umzusetzen. Verewigt aber Deinen Namen im Forum. :]


    Falls Du je doch näher darüber nachdenken solltest, lass es mich wissen. Da kann ich einige Hilfestellung geben.


    Ach ja, mit den Sirf-Zeilen meinte ich die, die über Sirftech zu sehen sind. Aber Du hattest mir da schon einmal einen Artikel genannt, eben das PDF von Sirf, nur habe ich es mir (blöd) nicht gemerkt. Muss ich also mal auf die Suche gehen, ob ich es wiederfinde. :(

  • Zitat

    Original von karomue
    Also wenn Du das überhaupt tun willst, dann natürlich erstmal ohne weiteren Aufwand.


    Glaub mir - es ist wirklich besser, wenn ich erstmal ein paar Kommentare einfüge. :D




    Zitat

    Original von karomue
    Ein Zusammenschreiben des Pendants auf Sirfebene wäre evtl. schon interessant, da ja Sirf wegen der EGNOS-Informationen an Bedeutung gewinnen sollte. Und ganz allgem. über Sirf mehr Infos abrufbar sind als über NMEA.


    Das ist durchaus richtig, aber halt auch nur wenige Freaks von Interesse. Ich bin wirklich der Meinung, daß ein solcher Artikel nicht notwendig ist.


    Viele Grüße
    hevo2

    Einmal editiert, zuletzt von hevo2 ()

  • Zitat

    Original von hevo2
    Hallo Charly,


    Ich weiß nicht so recht, ob es sinnvoll wäre einen solchen Artikel zu schreiben. Denn die Leute, die sich das Thema überhaupt "antun" würden, sind eh "GPS-Insider", können höchstwahrscheinlich (auch) programmieren und brauchen daher sicher nicht mehr als das PDF von SiRF, um das Protokoll zu verstehen oder auseinandernehmen zu können. Das selbe gilt für das binäre u-blox Format. Ich persönlich halte das für "Eulen nach Athen tragen" und einen Mini-Programmierkurs wollen wir doch sicher nicht veranstalten.



    Einspruch Euer Ehren


    es gibt viele Leute, die von Programmierung keine Ahnung haben, sich aber sehr für die Grundlagen unseres Hobbys interessieren - ja, ich weis, das hat mit Grundlagen nichts mehr zu tun - für mich ist das auch höheres Wissen


    Daher würde ich einen diesbezüglichen Artikel sehr begrüssen, würde dieser doch auch "noch-nicht-Insidern" Anhaltspunkte liefern bzw diese möglicherweise/hoffentlich ködern, aktiver mitzumachen


    bitte überlege dir deine Entscheidung nochmal

  • Hallo Klaubi,


    so ähnlich sehe ich das auch.


    Das war auch eine Entscheidung mit für FirstStep, wo man ja - überraschend für mich - doch öfter lesen kann, dass dies als Neulings-Pflichtlektüre angepriesen wird.


    Nachdem ja SirfTech nun auch zu den Standardprogs gehört, wird dieses auch von immer mehr User angewendet. Wenn nun ein Artikel erklärt, was man da sieht bzw. was man wie und mit welchen Auswirkungen einstellen kann, ist das sicher eine Bereicherung für das Forum. Und wird noch mehr Anwender finden.


    "Wir" werden das nochmal bequatschen, evtl. - zeitfrage - machen wir einen gemeinsamen Artikel. Schaun mer mal.

  • Hallo Charly


    danke für deine Mühe - da freue ich mich drauf,
    denn jedes Wissen, dass ihr Spezialisten weitergebt, hilft unzähligen Usern zum besseren Verständnis
    Auch wenn nicht Alle Alles gleich verstehen werden - die Neugier, sich damit zu beschäftigen wird geweckt - und das ist für mich das Wichtigste


    Zitat

    Original von karomue .........Das war auch eine Entscheidung mit für FirstStep, wo man ja - überraschend für mich - doch öfter lesen kann, dass dies als Neulings-Pflichtlektüre angepriesen wird.
    ..


    dafür danke ich dir nochmals ausdrücklich - hat sicherlich Legionen von Usern geholfen, unsere kleinen technischen Wunderwerke besser oder überhaupt erst zu verstehen
    eigentlich wollte ich deine FirstSteps im Einsteigerboard antackern,
    nachdem wir aber doch eine Lösung mit einem eigenen Grundlagen- und Hintergrundwissen-Bereich anstreben, werde ich vorerst weiter in Postings darauf verlinken

  • Hallo!


    Ich merke schon, ihr wollt mich "weichklopfen". ;) Prinzipiell habe ich nichts gegen einen solchen Artikel, habe aber nicht die Zeit ihn zu verfassen. Charly hat sich gerade angeboten. Ich könnte ihm höchstes helfend zur Hand gehen.




    @Charly: Wart erstmal mit deinen Fragen, bis du den kommentieren Quelltext in der Hand hälst. Abgesehen von einem darin enthaltenen C-Crashkurs für VBA-Programmierer, sollte der Text auch einige weitere Fragen beantworten.


    bfn hevo2


  • Ja. Danke schon mal, dass Du Dich bereit erklärst, meine Neugierde zu befriedigen.


    Und was der "Artikel" auf jeden Fall brauchen wird, ist Zeit. So schnell wird das nichts werden. Zumal ich mich auch erst in die Erklärung der Sirf-Protokoll-Zeilen einarbeiten muss, und das ist bei weitem schwieriger als beim NMEA-Protokoll.


    Wie ich damit zurechtkomme, weiß ich noch nicht. Auch da hoffe ich auf Starthilfe von Dir, zumindest auf sowas wie einen Katapultstart. :gap

  • Ich versuche aus meiner BT GPS Maus (Xaiox Diamond, SirfIII) auch die DGPS-Daten (SBAS) herauszukitzeln - leider ohne Erfolg.


    Da ich kein PDA habe, habe ich ein kleines Programm auf meinem Linux Laptop geschrieben, dass die Maus in den Sirf-Binary Modus versetzt und die Daten auswerten kann.


    Leider habe ich bis jetzt keine Auswirkung auf die empfangenen Daten gesehen. Ich weiß nicht, ob es deshalb nicht funktioniert, weil der Modus falsch aktiviert wurde, kein passender Satellit gefunden wurde oder die Maus es schlicht und ergreifend nicht kann.


    Die Nachricht mit dem Alter der GPS-Korrekturen zeigt als Alter immer 0.


    Die oben erwähnte Msg 29 (dez) habe ich nie gesehen.


    Deshalb die folgenden Fragen:
    - Sollte jede SirfIII-Maus SBAS unterstützen oder muss die Maus eine besondere (weitere) Hardware haben?
    - In der Visible List oder der Liste der getrackten Satelliten taucht keine Nummer über 99 auf (ich nehme an, die geostationären haben 3stellige Nummern). Ist das so richtig?
    - Zum Aktivieren verwende ich zur Zeit die folgenden Sirf-Befehle: (nur Payload)


    Code
    # DGPS source: SBAS,
    sirfframe(fo,"85010000000000")            
    # SBAS parameter: default timeout, any SBAS SV
    sirfframe(fo,"AA0000000000")
    # DGPS control
    sirfframe(fo,"8A001E")


    Fehlt da was?

  • Hallo vimico,



    Zitat

    Original von vimico
    - Sollte jede SirfIII-Maus SBAS unterstützen oder muss die Maus eine besondere (weitere) Hardware haben?


    Jede SirfIII-Maus kann SBAS ohne zusätzliche Hardware. Die Frage ist bloß, was in der Firmware "vorgeht". Bei mir ist MID27 verkrüppelt, dafür funktioniert MID29.



    Zitat

    Original von vimico
    - In der Visible List oder der Liste der getrackten Satelliten taucht keine Nummer über 99 auf (ich nehme an, die geostationären haben 3stellige Nummern). Ist das so richtig?


    MID13 habe ich noch nicht auseinandergenommen, in MID4 sollte aber der gefundene SBAS mit seiner dreistelligen PRN im Kanal 12 auftauchen, WENN SBAS eingeschaltet ist.


    Und wenn der Empfänger nach DGPS schaltet, steht das in MID2 (Feld Mode1 Bit 7). Erst dann kommt auch die MID29.



    Es bietet sich vor allen EGNOS-Spielereien an, zunächst auf dieser Website nachzuschauen, ob die EGNOS-Sats überhaupt senden...


    http://ravel.esrin.esa.int/doc…agetech_realtime_html.htm




    Zitat

    Original von vimico
    - Zum Aktivieren verwende ich zur Zeit die folgenden Sirf-Befehle: (nur Payload)


    Code
    # DGPS source: SBAS,
    sirfframe(fo,"85010000000000")            
    # SBAS parameter: default timeout, any SBAS SV
    sirfframe(fo,"AA0000000000")
    # DGPS control
    sirfframe(fo,"8A001E")


    Fehlt da was?


    Das sieht erstmal richtig aus und fehlen tut da - glaube ich - auch nix. Was antwortet der Empfänger auf deine Sequenzen - ACK oder NACK?


    bfn hevo2

  • Ich habe unterdessen die Maus gewechselt. Royaltek RBT-2010.


    Auch Sirf III, und auf der Verpackung wird mit "SBAS (WAAS/ENGOS) is supported" geworben.


    Und in der Tat: Selbst im NMEA-Format zeigt ein Bit an, ob die Daten korrigiert wurden. Und Sirfmon (ein kleines Linux-Programm eines anderen Autors zur Auswertung der Pakete) zeigt (wenn der Empfang günstig ist) im letzten Kanal eine 3stellige PRN an.

  • Hallo, ich wäre sehr am Quellcode für das Tool interessiert. Hintergrund: Mein NaviGPS kann nur Tracks einer bestimmten Länge als GPX exportieren; die SiRF-Logs hingegen sind viel umfangreicher, nur kann ich sie leider mangels Konverter unter Linux nicht nutzen :-D) . Ich würde gerne versuchen, ein Tool vergleichbar zu s2n unter Linux zu basteln. Und es wäre mir eine grosse Hilfe, wenn ich dabei nicht von null ausgehen müste ;)


    Grüsse
    Florian