Erste Schritte mit GPS

  • Hallo QRP Forum.


    Zurzeit mache ich meine ersten Schritte im Zusammenhang mit dem globalen Positionierungssystem. Um die Daten genauer zu untersuchen schreibe ich gerade ein Programm, um mein GPS Device auszulesen. So ganz fertig bin ich noch nicht, aber ich nähere mich so langsam der Fertigstellung. Das Programm greift auf die COM Schnittstelle des PCs zu (auswählbar) und filtert den $GPGGA String heraus, der die wichtigsten Angaben enthält.


    ToDo:

    • "Profi Modus" einfügen, bei dem alle Messages dekodiert und angezeigt werden
    • Hilfe schreiben


    Teilweise erledigt:

    • Maidenhead Locator einfügen
    • Aktualisierung der Pc Zeit nach GPS Zeit


    Done:

    • Fehlerfreie Extraktion der Werte auch bei GPS, die nicht dem Standard NMEA Protokoll folgen, sondern kleine Abweichungen haben
    • Prüfung der Funktionalität auf Vista und Windows 7 PC'S
    • Verifikation der Pakete durch die Checksumme
  • Hallo Jan,
    prima Sache!
    Hab es getestet mit einer Motorola-GPS-Mouse (Bluetooth)
    Wünschen würde ich mir (für uns Nutzer) die Anzeige des Locators
    und die Aktualisierung der PC-Zeit (wenn kein Internet da ist) für WSJT usw.
    73 und einen guten Rutsch nach 2011 de Reinhard DL5ZA

  • Das hatte ich bereits vorgesehen.


    Ich hätte die neue Version bereits hochgeladen, aber ich wurde von meinem Betriebssystem überrascht, das mit einen BSOD lieferte. Das war dann gleichzeitig auch der Grabstein, denn mir gingen alle Dateien verloren. Die wichtigsten hatte ich noch im Backup, aber das Programm noch nicht. Ich werde also alles neu aufbauen müssen, das dauert eine Weile.


    Tut mir Leid, das ich noch nicht mit der neuen Version aufwarten kann. :(


    Edit 1.1.11 um 05:00:07 (laut 2tem GPS): Nun der aktuelle Stand. Der Locator ist noch nicht eingefügt und die Systemzeit noch nicht setzbar, da mir Vista und Windows7 momentan noch mit ihrem Rechtesystem einen Strich durch die Rechnung machen. Dafür funktioniert nun das Datum und die Standortanzeige. Eine Fehlersichere Erkennung der einzelnen Ausgaben ist nurn auch gewährleistet. Sollte dem nicht so sein, bitte ich um Rückmeldung. Um die Versionen auseinander halten zu können habe ich dem Programm nun die Version 0.1a aufgedrückt.


    Weitere Anregungen für das Tool sind wilkommen :)


    Nebenbei: Herzliche Glückwünsche Reinhard!

    3 Mal editiert, zuletzt von DL8JAN ()

  • Falls Du noch keinen Code zum Berechnen des Maidenhead-Locators hast ... hier ist ein Beispiel.


    Ich lagere viele Source-Codes, die ich mache, auf externen Webseiten aus (Gitorious, Berlios, Sourceforge, wasauchimmer). Das mache auch auch schon, bevor die Software ganz fertig ist, nur kriegt das halbfertige dann i.a. keinen Platz auf meiner Homepage. Dadurch, daß nun der Sourcecode auf mindestens zwei Rechnern ist, stört mich ein BSOD nicht. Abgesehen davon verwende ich natürlich ein Betriebssystem, das keinen BSOD kennt :)


    Alternativ könntest Du den Source-Code mit in das ZIP-File Deines Programmes hineintun. Dann hättest Du auch eine externe Datensicherung gehabt, smile.


    Andererseits: manchmal hatte ich den Effekt, daß ich beim zweiten Schreiben desselben Programmes dieses dann viel eleganter / effizienter geschrieben habe. Ich konnte ja auf die Erfahrungen der Programmierung von Version 1 zurückgreifen.

  • Hallo Holger,


    danke für den Code für den Maidenhead!


    Normalerweise lagere ich Sourcecodes auch aus, doch hier hatte ich das glatt vergessen. Ich bin SICHER, dass du das auch kennst :)


    Die Software wollte ich eigentlich unter der GPL veröffentlichen, allerdings macht mir da die Lizenz von Delphi einen Strich durch die Rechnung (Und das ist die einzige Sprache, die ich soweit kann, das ich eine RS232 Verbindung herstellen und auswerten kann). Die IDE läuft auch nur auf Windows, leider. BSOD sind mir sonst auch total fremd, ich nutze den Pinguin :)
    Zzt überlege ich, auf Qt umzusteigen, doch dafür muss ich eine komplette Sprache neu lernen. Mal schaun ob ich mir das antue.


    Da Delphi das Fenster direkt mit dem Code verbindet, wird das ganze Projekt die Größe des erlaubten Anhangs überschritten.


    Der Effekt, den du beschrieben hast, der ist auf jeden Fall eingetreten. Eleganter als vorher ist es auf jeden Fall geschrieben :)

  • Ich nutze gerne Qt, sowohl auf der Arbeit als auch privat. Es wahr schon mehr als einmal sehr brauchbar, das ich ein Programm sowohl für Linux als auch für Windows compilieren konnte. Den seriellen Port kannst Du wunderbar mit qextserialport ansteuern. Der ist sehr leicht zu verwenden, nutze ich u.A. in meinem Screen-Dump-Programm für den HP 8920 Funkmessplatz. Hier siehst Du ein Beispiel der Anwendung: Baudrate etc einstellen (Zeile 53), Instanz erzeugen (Zeile 61), Com-Port öffnen (Zeile 62), einen "Wächter" für reinkommende Zeichen erzeugen (Zeile 71), das Signal "Daten da" des "Wächters" mit der Abarbeitungsmethode "slotData()" verknüpfen (Zeile 72). "slotData()" ist eine Methode eines andere Objektes, das ist anders als bei Delphi möglich. Hier ist sie, in Zeile 77 lese ich vom seriellen Port.


    Die Unterschiede zwischen C++ und Delphi sind gar nicht mal soooo riesig. Sicher, C++ hat eine Menge mehr Möglichkeiten. Allerdings kannst Du als Programmierer ja selbst entscheiden, was davon Du verwenden willst. Außerdem sind bei Qt die Container, Iteratoren und Strings meines Erachtens einfacher als bei LibStc++. Netter dokumentiert sowieso. Für Einsteiger empfehle ich den Qt-Creator, gibt's für Linux, Mac OSX und Windows.



    Ich habe eine ganze Reihe von Ot-Objekten geschrieben, die direkt oder indirekt mit dem Amateurfunk zu tun haben, u.a. das Maidenhead-Zeugs, aber auch was zur APRS-Dekodierung und zur Erzeugung von Morse. Derzeit arbeite ich immer mal wieder an Programmteilen für die Geländebeurteilung ITU-R P.452 und P.1812 und evtl. Funkausbreitung nach Longley-Rice. Da sind dann Qt-Objekte bzw. C++-Funktionen "Pfad zwischen zwei Punkten auf dem Großkreis", "Effizientes Lesen von SRTM-Daten", "Anzeige von Tile-basierten Kartendaten a la Google-Maps oder OpenStreetMaps", "Berechnen von Höhenprofil", "Geländebeurteilung nach ITU-R P.452" schon fertig. Demnächst mache ich dann Line-Of-Sight, Freiraumdämpfung und dann Longley-Rice. Letzteres existiert schon als C++-Code, muß man nur einbinden und etwas umschrieben, damit es Thread-Fähig und damit auf Multi-Core-Prozessoren schneller wird.


    Und intern habe ich noch eine Rohfassung von Qt-Code, um den ICS 307 im Hobo zu steuern :)