Darstellung UTM Koordinaten

  • Reg-Eintrag ist auch ok.


    Aber würde man denn die Anzeige nicht am besten in der Karte unterbringen. Mit der Kurs-Angabe hilft das doch beim Navigieren z.B. auf Gewässern und dann hätte man ja vielleicht auch gerne eine Kartenansicht. - Oder verstehe ich da etwas falsch?


    Beste Grüße


    George 2007

  • Hallo Zusammen,


    wer zu später Stunde noch testen will - ich habe eine neue Testversion (V1.09 Rev.3) hochgeladen:


    Hier zwei Beispiele:


    Zum Bild in der Kompass-Ansicht gehören folgende Parameter:
    Window=0 KoordServ=0 ServWnd=utm,80,5,180,20,-20,255,50,100\orthodrome,5,35,150,30,-30,0,0,128{%.3fkm}\direction,5,60,150,16,16,0,0,128\wgs84_s,200,35,200,45,20,0,0,100\target_d,50,215,200,16,-16,0,100,0{Ziel:%f° %f°}\| t=1 GPSPort=com5:


    Die Anzeige der Geschwindigkeit in der MapView erfolgt so:
    Window=0 KoordServ=1 ServWnd=speed,30,30,100,24,-24,200,200,0{%.0f km/h}\| t=0 rb=20 gb=20 bb=20 GPSPort=com5:



    Wie man sieht, habe ich die Syntax erweitert:
    1) Es müssten alle anderen Befehle (SendKey= etc.) nun auch zusätzlich laufen.


    2) Daher muss man nun Window=0 angeben, damit das Koordinatenfenster nicht aufgeht.


    3) KoordServ=1 bewirkt, dass ein Fenster (bzw. Fensterausschnitte) aufgemacht wird, das immer im Vordergrund liegt. Auf dieses Fenster wird gezeichnet. Das hat den Vorteil, dass die Ausgaben nicht durch GoPal gelöscht werden können.
    KoordServ=1 bewirkt, dass direkt auf den Bildschirm gezeichnet wird. Somit kann der Hintergrund transparent (t=1) gemacht werden. Der Nachteil ist ein mehr oder weniger starkes Flackern der Texte. Ich zeichne alle 500ms die Texte neu, weiß aber nicht, wann GoPal den Bildschirm updatet.


    4) Mit ServWnd= kann man nun die einzelnen Ausgabe(-teil)-fenster definieren:
    4.1) Die Teil-Fenster werden durch einen Backslash "\" voneinander getrennt.
    4.2) Der Befehl selbst muss mit dem "Pipe"-Zeichen (senkrechter Strich) "\|" abgeschlossen werden.
    4.3 Ein Teilfenster besteht aus diesen, durch Komma ","getrennten Pflichtangaben

    • Name
    • x-Koordinate
    • y-Koordinate
    • Fensterbreite
    • Fensterhöhe
    • Schrifthöhe (negativ=Fett)
    • Rotanteil der Schriftfarbe
    • Grünanteil der Schriftfarbe
    • Blauanteil der Schriftfarbe


    Danach kann noch ein selbstdefinierter Formatstring (printf-Format in "C") folgen, der in geschweiften Klammern stehen muss. Dabei muss aber unbedingt die vorgegebene Reihenfolge und der Typ der Parameter eingehalten werden!


    Diese Ausgabemöglichkeiten (=Name) gibt es momentan:
    utm -> UTM Koordinaten (4 Felder)
    speed -> GPS-Geschwindigkeit
    course -> GPS-Kurs (aktuelle Abweichung von Nord)
    wgs84_d -> aktuelle Koordinate in Dezimalschreibweise (2 Felder)
    target_d -> Ziel-Koordinate in Dezimalschreibweise (2 Felder) (aus der Registry "Position")
    orthodrome -> Luftlinie (genau gerechnet!) zwischen Ziel und akt. Position
    bearing -> Peilung zum Ziel (aktuelle Abweichung von Nord)
    direction -> aktuelle Richtung zum Ziel (bearing - course) (als 2. Feld wird nuch die "Marschzahl" angegeben)
    wgs84_s -> aktuelle Koordinaten in Himmelsrichtung Grad, Minute, Sekunde (dez.) (8 Felder)
    wgs84_m-> aktuelle Koordinaten in Grad, Minute (dez.), Himmelsrichtung (6 Felder)


    Hierzu gehören folgende default-Formatstrings:
    %i %c %07.0f %07.0f
    %.1fkm/h
    Kurs:%.1f°
    Lat=%.6f Lon=%.6f°
    tLa=%.6f tLo=%.6f°
    LL=%.3fkm
    Peilung:%.1f°
    Richtung: %.1f° MZ %.0f
    %c %02i° %02i' %04.1f''\n%c %03i° %02i' %04.1f''
    %02i° %07.4f' %c\n%03i° %07.4f' %c


    Viel Spaß beim Testen!


    Gruß,
    Stefan


    P.S.: Wie kann man denn zuverlässig einen Reg-Eintrag für eine aktuelle View erzeugen? Nur über die Pfeil-Buttons?


    EDIT: Den Parameter ServWindow= in ServWnd= geändert!

  • Hi Stefan,


    sehr schön. Da hast Du ja eine harte Nachtschicht hinter Dir.


    Gibt es denn außer dem Klicken auf die eingeblendeten Bereiche eine weitere Möglichkeit der Abschaltung, wenn bestimmte Bedingungen nicht mehr erfüllt sind (z.B. über andere params)?



    Beste Grüße


    George 2007


    I

  • Hallo George,

    Zitat

    Original von george 2007
    Gibt es denn außer dem Klicken auf die eingeblendeten Bereiche eine weitere Möglichkeit der Abschaltung, wenn bestimmte Bedingungen nicht mehr erfüllt sind (z.B. über andere params)?


    ah sorry, hatte ich vergessen zu schreiben:
    Momentan ist es eine "toggle"-Funktion. Wenn KordServer nicht läuft, dann wird er gestartet und wenn er schon läuft, dann wir er beendet!


    Zukünftig könnte ich mir vorstellen, dass man über den Wert hinter KoordServ= folgende Einstllungen machen kann:
    - Programm starten bzw "toggeln".
    - weitere Fenster und Funktionen hinzufügen / löschen
    - Programm beenden
    - Programm für eine bestimmte Zeit starten und dann autom. Beenden. Also z.B. Die Koordinaten für 10 Sekunden Einblenden.


    Weitere Funktionen, die ich mir vorstellen kann:
    - "Event" erzeugen und eine Aktion (z.b. SendKey=) ausführen, wenn eine Bedingung erfüllt ist, z.B. Unterschreiten einer best. Entfernung zum nächsten Ziel (autom. NWP).
    - Anzeigen des nächsten Ziels (Wegpunkt) als Text
    - Anzeigen der Höhe (in der MapView)
    - Buttons mit Mehrfachauswahl: beim Klick erscheint eine Art PoUp-Menü
    - Dazu ist eine Art "Batch-Abarbeitung" von Parametern nötig. Also Angabe eine Parameterdatei als Parameter.
    - Abfangen und Simulieren von Key-Events: z.B. Doppelklick auf der Fernbedienung etc.


    Gruß,
    Stefan

  • Hi Stefan,


    ich habe mal einen ersten Test gemacht - mit transparenter Einblendung in der Kartenansicht. Ich habe Richtung, Entfernung zum Ziel und aktuelle Koordinaten ausgewählt - eine Kombination, die für Off-Road Navigation vielleicht ganz gut wäre.


    Die Anzeige flackert sehr stark - durch die Neuzeichnung der Karte in GoPal - ich denke, da würde ich dann doch einen Hintergrund vorziehen - das muss ich noch ausprobieren.


    Das Wort 'Richtung' nimmt sehr viel Platz ein. Bei der Einblendung in der Karte würde man wahrscheinlich weitestgehend auf solche Beschriftungen verzichten wollen - oder diese ganz klein machen oder stark abkürzen. (gleiches gilt für Lat.=)


    Bei der aktuellen Koordinatenangabe würde man wohl eine zweizeilige Anordnung haben wollen. Könnte ich das über die Fenstergröße irgendwie beeinflussen?


    Da ich keinen GPS-Empfang hatte, hat er die 0.00000 Koordinaten als aktuelle Position genommen und die Entfernung zum Ziel mit 5600 km angezeigt. Das ist natürlich recht unsinnig. Ich würde bei der Anzeige von daher fast bevorzugen, wenn man dies an Kartenansicht und GPS-Empfang koppeln könnte - so dass nur dann diese zusätzlichen Anzeigen eingeblendet werden, wenn man tatsächlich ein GPS-Signal empfängt. - Ich würde das bei mir dann wahrscheinlich über ein Mortscript umsetzen.


    Ich hoffe, die Rückmeldung hilft Dir. Das ist alles eine prima Erweiterung und hat großes Potential.


    Beste Grüße


    George 2007


    PS Der Klick hier klappt immer noch nicht richtig.


    params: "window=0 LKlick1=-10 x1=300 y1=100 KoordServ=0 ServWindow=orthodrome,45,160,100,20,-16,0,0,128{%.3fkm}\direction,45,180,100,20,-16,0,0,128\wgs84_d,183,180,100,20,-16,0,0,128\| t=1 GPSPort=com3:";

  • Hallo George,


    danke für die Rückmeldung!


    Zitat

    Original von george 2007
    Das Wort 'Richtung' nimmt sehr viel Platz ein. Bei der Einblendung in der Karte würde man wahrscheinlich weitestgehend auf solche Beschriftungen verzichten wollen - oder diese ganz klein machen oder stark abkürzen.


    die Formatänderungen kannst Du ja selbst machen. Hier ein Beispiel:


    window=0 LKlick1=-10 x1=300 y1=100 KoordServ=0 ServWnd=orthodrome,45,160,100,20,-16,0,0,128{%.3f km}\direction,45,180,100,20,-16,0,0,128{%.1f°}\wgs84_d,183,160,100,32,-16,0,0,128{%.6f°\n%.6f°}\| t=1 GPSPort=com3:


    Die Anzeige soll natürlich nur bei GPS-Empfang erfolgen. Das baue ich wieder ein!


    Der Klick geht bei mir (mit anderen Koordinaten...) Funktioniert der Klick bei dir, wenn Du nur diesen ausführst?


    Bzgl. Flackern kann ich vielleicht noch mit den Refresh-Zeiten spielen, ansonsten müsstest Du es mit KoordServ=1 testen. In der Kompassansicht (wenn sich der Hintergrund nicht ändert) funktioniert das mit dem direkten Schreiben recht gut.


    Gruß,
    Stefan


    EDIT: Den Parameter ServWindow= in ServWnd= geändert

  • Super, Stefan, probier ich nachher nochmal aus.


    Ich brauche mich um eine GPS-Abfrage also nicht zu kümmern - das kannst Du in Deinem Programm einfügen??


    Beste Grüße


    George 2007

    Einmal editiert, zuletzt von george 2007 ()

  • Zitat

    Original von george 2007
    Ich brauche mich um eine GPS-Abfrage also nicht zu kümmern - das kannst Du in Deinem Programm einfügen??


    Die Primitiv-Version ist nun wieder d'rin (nochmal herunterladen!).
    Die Anzeige stimmt aber nicht genau mit dem GoPal Status überein, da ich momentan nur die "Empfängerwarnung" des "$GPRMC"-Datensatzes auswerte, um zu entscheiden, ob die GPS-Daten gültig sind.
    Außerdem blende ich momentan alle Texte (z.B. auch ggf. die Zielkoordinaten) aus. Der Hintergrund bleibt aber -falls eingeschaltet- an. Das Programm läuft weiter!


    Gruß,
    Stefan

  • Hi Stefan,


    jetzt habe ich verstanden, wie ich die verschiedenen Parameter einsetzen kann. Klappt jetzt sehr gut - als Fenster. Auch der Klick funktioniert jetzt. Mit dem Kompass-Button kann man die zusätzlichen Informationen einblenden lassen.


    Ich überlege nun mal, wie ich das in ein Mortscript einbinde, um Kartenansicht und GPS-Empfang abzufragen. Ich glaube Reg. Einträge wären da sehr schwer, weil es so viele Wege aus der Karte gibt. Aber vielleicht hat wind-hund da noch gute Vorschläge.


    Insgesamt ist es schon ein sehr schönes Tool, um zusätzliche Navigationsinformationen nach Belieben einblenden zu lassen.


    Beste Grüße


    George 2007

  • Hallo zusammen,


    es gibt wieder eine neue Testversion zur UTM-Anzeige:
    Es können nun gezielt GoPal-Views per GetPixel für die Anzeige ausgewählt werden und es wird unterschieden, ob GPS-Empfang vorhangen ist oder nicht! Es werden nur die aktuell benötigten Fensterhintergründe angezeigt.


    Beispiel (s. Bilder):
    - In der MapView sollen Entfernung zum Ziel (Luftlinie) und geographische Koordinaten angezeigt werden
    - In der Kompass-Ansicht sollen Entfernung zum Ziel (Luftlinie) und UTM-Koordinaten angezeigt werden
    - In allen anderen Ansichten soll nichts erscheinen


    Mit diesem einen Parameter ist das (im orig. Skin!) möglich:

    Window=0 KoordServ=1 PixWnd=0,78,257,0,0,0\0,82,257,0,0,0\1,12,12,0,0,0,12,21,0,0,0\| ServWnd=utm,80,5,180,20,20,255,50,100,0x4\orthodrome,5,35,150,30,-30,0,0,128,0xF{%.3fkm}\wgs84_s,200,35,130,45,20,0,0,100,0x3\| t=1 GPSPort=com5:


    Was ist neu?


    1) Der Parameter ServWindow= wurde umbenannt in ServWnd=, da es sonst zu Konflikten (mit Window=) hätte kommen können.


    2) Mit PixWnd= kann man die (GoPal-)Fenster per GetPixel abfragen.
    Der erste Wert legt eine (selbstdefinierte) Fensternummer fest. Ich habe 0 für die MapView und 1 für die Kompassansicht genommen.
    Der 2. und 3. Wert sind die x- und y-Koordinaten des abzufragenden Pixels.
    Der 4. bis 6. Wert stellt den Soll-RGB-Wert des Pixels dar.
    Optional kann noch ein zweiter Pixel definiert werden (dann müssen beide Pixel die angegebenen Farben haben):
    Der 7. und 8. Wert sind die x- und y-Koordinaten des zweiten abzufragenden Pixels
    Der 9. bis 11. Wert stellt den Soll-RGB-Wert des zweiten Pixels dar.


    Die einzelnen Fenster werden mit "\" beendet. Der Parameter selbst mit "\|"


    Hinweis: Die Fenster-Nummer (1. Wert) kann auch mehrmals vorkommen, dann entspricht das einen "ODER-Bedingung" (z.B. für Sonnenbrille)


    3) Um den Ausgabe-Werten, die ja mit ServWnd= definiert werden, das oder die Fenster (PixWnd=) zuzuordnen, kann noch ein weiterer Wert angegeben werden. Diese ist folgendermaßen Bit-codiert:
    Ein Fenster besteht aus 2 bit.
    Ist das niederwertige bit gesetzt, so muss GPS-Empfang vorliegen.
    Ist das höherwertige bit gesetzt, so darf kein GPS-Empfang vorliegen.
    Sind beide bits gesetzt, so ist es egal, ob ein GPS-Signal anliegt oder nicht!
    Ist kein bit gesetzt, so erfolgt auch keine Anzeige.
    Das Fenster mit der (mit PixWnd= definierten) Nummer 0 wird durch die ersten beiden bits (0 und 1) repräsentiert. Das Fenster 1 gehört zu bit 2 und 3 usw.


    Erläuterung am obigen Beispiel:
    Die MapView erkenne ich an dem schwarzen Doppelpunkt in der Uhrzeit. Ich nehme hier nur den oberen Punkt.
    Die Position des Punktes ist aber abhängig von der Stellenanzahl der Stunden, daher habe ich 2 verschiedenen Koordinaten definiert:
    PixWnd=0,78,257,0,0,0\0,82,257,0,0,0\
    MapView sei Fenster 0
    Das schwarze (0,0,0) Pixel des Doppelpunktes sei entweder bei 78,257 oder 82,257


    Das Kompass-Fenster erkenne ich am schwarzen K in der Titelzeile:
    PixWnd=1,12,12,0,0,0,12,21,0,0,0\
    Kompass-Fenster sei Fenster 1
    Es muss ein schwarzes (0,0,0) Pixel sowohl auf 12,12 als auch auf 12,21 sein.


    Diese Ausgaben sollen erfolgen (ServWnd=):
    wgs84_s,200,35,130,45,20,0,0,100,0x3
    0x3 ist hexadezimal und stellt die bit-Folge 00000011 dar. Das bedeutet, dass die Anzeige nur im Fenster 0 (MapView) erfolgen soll und es egal ist, ob ein GPS-Siglal anliegt.


    utm,80,5,180,20,20,255,50,100,0x4
    0x4 stellt die bit-Folge 00000100 dar. Das bedeutet, dass die Anzeige nur im Fenster 1 (Kompass) erfolgen soll und dass ein GPS-Signal anliegen muss.


    orthodrome,5,35,150,30,-30,0,0,128,0xF
    0xF (=15) stellt die bit-Folge 00001111 dar. Das bedeutet, dass die Anzeige im Fenster 0 und 1 erfolgen soll und es egal ist, ob ein GPS-Siglal anliegt.


    In allen andren Fenstern erfolgt keine Ausgabe!



    So, dass war nun einiges zum Verstehen! Ich hoffe, es klappt so, wie ich es mir vorstelle. Bitte mal testen!


    Bitte beachten, dass die Parameterzeile nicht zu lang (ca. 255 Zeichen) wird. Mir ist klar, dass das auf Dauer nicht reicht und ich eine cfg-Datei für die Fenster aufbauen muss. Aber das dauert noch.


    Gruß,
    Stefan

  • Hi Stefan,


    da bist Du ja einen großen Schritt weitergekommen. Ich habe gleich noch ein paar Fragen:


    Kann man auch mehr als zwei Pixel abfragen - also drei oder vier für ein Fenster?


    Bei der Auslesung des GPS-Signals über die gesetzten bits: wenn kein GPS-Signal vorliegt und dies als Bedingung für die Anzeige gewählt wird - wird dann das graue Fenster leer angezeigt oder ist es ganz weg?


    Von diesen bit-Werten habe ich keine Ahnung - was müßte man denn für Fensteransicht nur bei GPS-Empfang anfügen??


    Beste Grüße


    George 2007


    Und die neue Version gibt es auf Deiner wince.dentro Seite?

    Einmal editiert, zuletzt von george 2007 ()

  • Hallo Stefan,


    wenn Du mit dem Koord nun den Standort kennst, dann ist es sicher auch nicht mehr sehr schwierig eine Umkreissuche mit den POIs aus den ASC Overlays zu realisieren? ;D


    Gruß
    Karatzie

  • Hallo George,

    Zitat

    Original von george 2007
    Kann man auch mehr als zwei Pixel abfragen - also drei oder vier für ein Fenster?


    Momentan nur 2, da ich dann erst mal die Parameter in eine cfg-Datei stellen will, sonst reicht mir die eine Zeile nicht aus. Prinzipiell ist es natürlich kein Problem.


    Zitat

    wenn kein GPS-Signal vorliegt und dies als Bedingung für die Anzeige gewählt wird - wird dann das graue Fenster leer angezeigt oder ist es ganz weg?


    Es ist nun ganz weg!


    Von diesen bit-Werten habe ich keine Ahnung - was müßte man denn für Fensteransicht nur bei GPS-Empfang anfügen??
    Also wenn Du nur ein Fester hast (z.B. die MapView) und diesem die Nummer 0 gegeben hast, dann musst Du 0x1 oder auch einfach 1 angeben.


    Hast Du noch ein zweites fenster definiert (z.B. Kompass mit Nummer 1) und du willst Die Anzeige nur auf diesem fenster haben, dann wäre es die 0x4 oder auch einfach 4 angeben.


    Willst Du nun die selbe Anzeige auf beiden Fenstern haben (und nur dort), dann musst die beide Werte mit logisch "OR" verknüpfen, also 0x1 OR 0x4 ergibt 0x5


    Ich versuche es hier nochmal in Binärschreibweise zu verdeutlichen:

    PixWnd=0, ...
    PixWnd=1, ...


    fest programmierte Bitmasken:
    00 -> keine Anzeige
    01 -> Anzeige bei GPS
    10 -> Anzeige bei keinem GPS
    11 -> immer Anzeige


    Zuweisung der Fenster:
    _7 _6_ 5 _4 _3 _2 _1 _0 (Fensternummer)
    00 00 00 00 00 00 00 00 (Bitdarstellung in ServWnd=...,0x...)



    Im Beispiel:


    nur Fenster 0 und nur bei GPS:
    _7 _6_ 5 _4 _3 _2 _1 _0
    00 00 00 00 00 00 00 01 = 0x1 = 1


    nur Fenster 0 und 1 und nur bei GPS:
    _7 _6_ 5 _4 _3 _2 _1 _0
    00 00 00 00 00 00 01 01 = 0x5 = 5


    Fenster 0 nur bei GPS und Fenster 1 immer:
    _7 _6_ 5 _4 _3 _2 _1 _0
    00 00 00 00 00 00 11 01 = 0xD = 13



    Zitat

    Und die neue Version gibt es auf Deiner wince.dentro Seite?


    Ja, wie immer!


    @karatzie:
    Ja, aber das machen doch die POIxxx-Programme schon, oder?
    Wie sollte das genau aussehen?




    Gruß,
    Stefan

    Einmal editiert, zuletzt von StefanDausR ()

  • Zitat

    Original von StefanDausR


    @karatzie:
    Ja, aber das machen doch die POIxxx-Programme schon, oder?
    Wie sollte das genau aussehen?


    Gruß,
    Stefan


    Hallo Stefan,


    da hast Du recht, die POIWarner und POI Observer können das wohl.
    Es gibt aber viele, die diese Programme nicht nutzen. (Ich auch)
    Das Schweizer Taschenmesser für die GoPal-Navis (Dein Koord ;D) ist aber überall vertreten.


    Wie sollte das aussehen.


    Bild 1 zeicht die Dateinamenstruktur der POI.ASC Dateien aus dem Glopus.
    Bild 2 zeigt das Ergebnis der Umkreissuche.


    Im Ergebnis erkennt man das BMP des POI mit der Entfernung, die Richtung (Sehr Wichtig) und den Text aus der ASC Datei.


    Da fehlt jetzt nur der Button Zum POI Navigieren und die Koordinate des ausgewählten POI wird an GoPal als Ziel übergeben.


    Ein weiteres Schmankerl wäre es, wenn man sich bestimmten POIs auf 100 Meter nähert würde eine WAV Datei abgespielt. :D



    Mach aber das mit der UTM-Anzeige fertig, mein Kollege vom THW ist schon gespannt auf das Ergebnis.



    Gruß
    Karatzie