Höhe über NN anzeigen

  • Hallo Stefan,


    ich habe Sokobana V3 Beta32 auf mein P4410
    und möchte die Höhenanzeige in das MapMenu,
    anstatt der km/h-Anzeige integrieren.


    Habe den Tip direkt von Sokobana bekommen,
    mich direkt an Dich zu wenden.


    Ich habe Deinen zuvor beschriebenen Code
    erstmal nur zum Test an der entsprechenden
    Stelle des PFSkin kopiert.
    Zur Info, habe auch PoiObs drauf.


    Die Höhenanzeige funktionierte zwar, jedoch blieb
    diese auch, wenn ich in ein Untermenu gewechselt haben.
    Halt das gleiche Problem wie bei PoiObs.


    Was muss ich verändern, damit die Höhenanzeige
    beim Umschalten in ein Untermenu auch verschwindet?


    Bitte um Hilfe!


    Gruß
    ssnweb ?( :-D)

  • Hallo ssnweb,


    wenn die Anzeige schon mal funktioniert, dann werden wir den zweiten Teil auch noch hinbekommen!
    Also:
    Da ich nicht weiß, welche Anzeige gerade aktiv ist (MapView oder Kompass oder was auch immer), muss man zu einen Trick greifen. Der besteht darin, die Farbe eines (oder zweier) Pixels abzufragen und wenn der Pixel die erwartete Farbe hat, die Anzeige sichtbar zu machen. Dazu muss man sich natürlich genau überlegen, welche(r) dazu geeignet sind, denn sie die Farbe muss ja eindeutig sein.
    Im Originalskin habe ich das mit dem Doppelpunkt der Zeitanzeige gemacht, ich denke aber, dass sokobana sowieso ein paar Spezialpixel eingefügt hat, damit sein Skin darauf zugreifen kann. Vielleicht kannst Du ihn fragen, ob es für die MapView sowas gibt. Wenn nicht, müsstest Du enen passenden Pixel suchen oder im Notfall selber erzeugen.


    Wie man dann diese Pixelfarbe abfragen und der Höhenanzeige zuordnen kann, ist in der UTM-Anleitung gut beschrieben!
    Nur kurz soviel: Mit der 9. Zahl in dem Parameter für die Höhenanzeige (Default ist -1 für immer anzeigen), kann man das (die) mit PixWnd= definierte(n) Fenster zuordnen (bit-codiert).


    Gruß,
    Stefan

  • Super danke Stefan,


    werde mich nach Pfingsten daran machen
    und mich melden wenn es geklappt hat oder
    ich noch einmal Hilfe benötige.


    Gruß und schöne Pfingsttage


    ssnweb

  • Hallo Stefan,


    habe die Höhenanzeige jetzt mal installiert.
    Leider habe ich noch folgende Probleme, die
    ich nicht alleine lösen kann. Ich hoffe Du hilft
    mir ein wenig:


    - ich möchte dass die Höhenanzeige beim Staten des Map-Menus
    automatisch angezeigt wird. Bis jetzt muss ich manuell das grüne H
    drücken.


    - Beim zuschalten der Sokobana V3 Beta 43 Sonnenbrille dunkelt
    die Höhe nicht ab.


    - Die Höhenanzeige ist linksbündig, möchte ich aber rechtsbündig haben.


    - Das "m" für Meter ist mir zu groß. Wie bekomme ich die Schrift kleiner
    ohne das auch die Zahlen für die Höhe verkleinert werden.


    -Die Anzeige flackert etwas. Kann man das beseitigen?


    Ich denke das reicht erstmal.
    Anbei noch mein Skinausschnitt:


    Hoehe // SD 20.02.2008
    {
    Class: LauncherButton;
    Coordinates: 230,20,12,12;
    TextCoordinates: 1,-2,12,12;
    Text: "H";
    TextColor: 255,255,255;
    Font: 2;
    BGColor: 0,50,0,100;
    BGMode: opaque;
    FocussedColor: 0,0,0,100;
    DisableFocus: yo;
    launch: "\My Flash Disk\Sokobana\Koord2\koord465.exe";
    params: "Window=0 KoordServ=1 PixWnd=0,479,0,255,0,0\0,479,0,0,255,255\ wndrefresh=1000 t=3 ServWnd=height,354,246,100,24,-23,255,255,255,0x1{ %.0f m}\| GPSPort=com5:";
    }


    Danke im Vorraus für Deine Hilfe.


    Gruß ssnweb

  • Hallo Stefan,


    habe Dir weiter oben ein paar Fragen
    aufgelistet. Hast Du die bekommen?
    Kannst Du mit helfen?


    Gruß
    ssnweb

    Einmal editiert, zuletzt von ssnweb ()

  • Hallo ssnweb,


    Zitat

    Original von ssnweb
    Leider habe ich noch folgende Probleme, die ich nicht alleine lösen kann.


    wie ich sehe, konntest Du ja ein paar Sachen (Anzeige nur, wenn Pixel an ist und GPS-Empfang vorhanden) inzwischen schon selbst lösen...


    Zitat

    - ich möchte dass die Höhenanzeige beim Staten des Map-Menus automatisch angezeigt wird. Bis jetzt muss ich manuell das grüne H drücken.


    Wenn das mit der Anzeige nur in der Mapview (Kontrolpixel) zuverlässig funktioniert, dann kannst Du ja die Höhenanzeige bereits beim Starten der Navigation (oder vorher im Startmenü) einschalten. Sie läuft dann im Hintergrund, die Anzeige erfolgt aber erst in der MapView (und bei GPS-Empfang).


    Zitat

    - Beim zuschalten der Sokobana V3 Beta 43 Sonnenbrille dunkelt die Höhe nicht ab.


    Das liegt daran, dass die Höhenausgabe nichts mit dem GoPal-Fenster zu tun hat, sondern sich darüber legt. Eine andere Möglichkeit habe ich nicht!
    Mit etwas Aufwand könnte man das Problem so lösen, indem Du 2 Höhenausgaben erstellst (nomal + abgedunkelt) und dann einen Kontrollpixel nimmst, der mit abgedunkelt wird. Dann hast Du im Prinzip 2 unterschiedliche MapView-Ansichten, die Du entsprechend ansteuern kannst.


    Zitat

    - Die Höhenanzeige ist linksbündig, möchte ich aber rechtsbündig haben.


    Die Textausrichtung kannst Du in der Tausenderstelle (und Zehntausenderstelle) der Texthöhe übergeben: (links=0, zentriert=1, rechts=2, oben=0, mittig=4, unten=8)
    Diese Werte kombinieren (=addieren) und mit 1000 multiplizieren und zum Absolutwert der Höhe addieren. In Deinem Fall würde also -2023 statt -23 rechtsbündig und fett bedeuten.


    Zitat

    - Das "m" für Meter ist mir zu groß. Wie bekomme ich die Schrift kleiner ohne das auch die Zahlen für die Höhe verkleinert werden.


    Das geht so nicht. Du kannst das nur in 2 Fenster aufteilen, also eine Höhenangabe ohne "m" und das "m" extra in kleinerer Schrift, also z.B. so:

    Code
    ServWnd=height,354,246,80,24,-2024,255,255,255,0x1{%.0f}\text,434,246,20,24,-8016,255,255,255,0x1{ m}\|

    Die Koordinaten musst Du noch etwas anpassen.


    Zitat

    -Die Anzeige flackert etwas. Kann man das beseitigen?


    Das liegt an der Art und Weise, wie ich die Anzeige in GoPal "einblende": Ich kann ja nur entweder ein Fenster über GoPal legen, in dem die Anzeige erfolgt oder regelmäßig direkt auf den GoPal-"Bildschirm" schreiben. Die einzelene Modi kann man mit KoordServ= und t= steuern.
    Leider gibt es unter WinCE keine "richtigen" transparenten Fenster (so wie unter WinXP), daher muss ich mit einem Trick arbeiten, der aber auch ein Flackern zur Folge hat.
    Momentan habe ich keine bessere Lösung. Du kannst aber evtl. mit einem anderen Wert von wndrefresh= noch etwas verbessern.


    Noch ein Tipp zum Testen:
    Damit Du nicht immer die ganze PFSkin.skn ändern musst und somit jedes Mal GoPal neu starten musst, kannst Du Dir das "Leben" mit einer Include-Datei leichter machen, also so:



    und dann nur den Koord-Parameter in die angegebene Datei (Hoehe.txt) schreiben:

    Code
    Window=0 KoordServ=1 PixWnd=0,479,0,255,0,0\0,479,0,0,255,255\ wndrefresh=1000 t=3 ServWnd=height,354,246,100,24,-23,255,255,255,0x1{ %.0f m}\| GPSPort=com5:"


    Die Datei kann natürlich auch anders heißen und wo anderes liegen!
    Du brauchst dann nur die Hoehe.txt ändern und auf den Button drücken, damit Du die Änderung siehst.


    Gruß,
    Stefan

  • Super, danke Stefan!


    Das Kontrollpixel funktioniert perfekt und die Idee
    mit include werde ich heute Abend testen. Finde
    ich genial.


    Aber ich habe da noch eine Frage?
    Folgendes leuchte mir noch nicht ein.


    Wenn ich jetzt mein Navi starte,
    schaltet die Höhe automatisch beim
    starten vom Map-Menu ein,
    dies bedingt durch den H-Button und
    einem MouseClick den ich in der
    sokobanaservice.mscr integriert habe.


    Funktioniert!


    Aber wie mache ich das ganz ohne den H-Button,
    auf den möchte ich ja verzichten, nicht sehen möchte.


    Oder, wie kann ich die Höhe bereits im Startmenu ohne den H-button einschalten, so dass Sie auch in der Mapview direkt aktiv ist.



    Desweiteren habe ich noch folgende Fragen:


    Wie kann ich die Höhenanzeige für die Sonnenbrille abdunkeln?
    Welcher Parameter steht für dunkel?




    Wenn ich auf die Höhe in der Mapview tippe, verschwindet die Höhenanzeige.
    Wie kann ich das verhindern?



    Ich denke das wars auch schon.


    Vielen Dank für Deine Hilfe!


    Gruß
    ssnweb

  • Hallo ssnweb,


    schön, dass es klappt!
    Erst mal zum Verständnis: Die Höhenanzeige funktioniert ganz unabhängig von GoPal und kann daher auch von irgendwo aus gestartet werden. Das Zusammenspiel mit GoPal läuft ja nur über die Kontrollpixel, die könnten aber auch von einem anderen Programm stammen.


    Zitat

    Oder, wie kann ich die Höhe bereits im Startmenu ohne den H-button einschalten, so dass Sie auch in der Mapview direkt aktiv ist.


    Ganz einfach: Du machst Dir einen Button im Startmenü (am besten auch mit include=). Der könnte so ähnlich aussehen:

    Code
    <app name="koordinaten" madatory="1">
               <icon posX="323" posY="170" width="145" height="52" >
    	           <resource path="\Storage Card\Programme\koord\koord465.png" />
               </icon>           
               <action path="\Storage Card\Programme\koord\koord465.exe" param="include=\Storage Card\Programme\koord\MyTest.txt"/>
            </app>

    und als Parameter schreibst Du die ganze Höhenanzeige in die angegebene include-Datei.
    Wenn Du dann den Button drückst, ist die Höhenanzeige (im Hintergrund) aktiv, das Fenster wird aber erst angezeigt, wenn die Kontrollpixel übereinstimmen, also wenn die MapView aktiv ist.


    Zitat

    Wie kann ich die Höhenanzeige für die Sonnenbrille abdunkeln?


    Das kannst Du nur über die Textfarbe machen, also ein grau statt weiß wählen.


    Zitat

    Wenn ich auf die Höhe in der Mapview tippe, verschwindet die Höhenanzeige.
    Wie kann ich das verhindern?


    Du kannst nach dem Parameter für die Sichtbarkeit noch einen Wert angeben, der eine Aktion definiert, die beim Klicken ausgeführt wird. Die Default-Aktion (0) ist "Programm beenden". Also z.B. würde hier
    ServWnd=height,354,246,80,24,-2024,255,255,255,0x1,-1{%.0f}
    der rote Parameter (-1) bedeuten, dass beim Klicken nichts passieren soll. Man kann auf diese Art auch andere Aktionen hinterlegen.


    Gruß,
    Stefan

  • Danke Stefan,


    jetzt habe ich erst einmal genug Hilfestellung und Informationen
    und versuche diese erst einmal umzusetzen.


    Gruß
    ssnweb

  • Hallo Stefan,


    habe heute an der Abdunklung der Zahlen bei aktiver Sonnenbrille gearbeitet
    Alle 3 RGB Werte für Weiß sind dann bei mir 132.
    Auch die xy-Koordinaten Konnte ich mit PhotoElements von Adobe vermessen.
    Im Einzeltest funktioniert es auch perfekt, aber:


    Ich habe jetzt in dem PFSkin 2x die Höhe wie folgt hinterlegt.


    Hoehe // SD 20.02.2008
    {
    Class: LauncherButton;
    Coordinates: 445,0,2,2;
    //TextCoordinates: 5,2,12,12;
    //Text: "H";
    TextColor: 255,255,255;
    Font: 10;
    BGColor: 0,50,0,100;
    BGMode: opaque;
    FocussedColor: 0,0,0,100;
    DisableFocus: yo;
    launch: "\My Flash Disk\Sokobana\Koord2\koord465.exe";
    params: "include=\My Flash Disk\Sokobana\Koord2\HoeheT.txt";


    }


    Hoehe // SD 20.02.2008
    {
    Class: LauncherButton;
    Coordinates: 443,0,2,2;
    //TextCoordinates: 5,2,12,12;
    //Text: "H";
    TextColor: 255,255,255;
    Font: 10;
    BGColor: 0,50,0,100;
    BGMode: opaque;
    FocussedColor: 0,0,0,100;
    DisableFocus: yo;
    launch: "\My Flash Disk\Sokobana\Koord2\koord465.exe";
    params: "include=\My Flash Disk\Sokobana\Koord2\HoeheN.txt";


    }


    Entsprechend auch die TXT-Dateien (HoeheT.txt und HoeheN.txt) mit den params in \Koord.


    Mein Problem ist nun, dass ich die Höhe nicht 2x parallel aktivieren kann.
    Der H-Button von HoeheT schaltet den von HoeheN wieder aus.


    Was habe ich denn hier falsch gemacht?


    Hast Du eine Idee, wie ich beide Höhen parallel aktivieren kann?
    Kann ich irgendwie das ganze über einen schalter mit einer Bedingung regeln (wenn Pixelfarbe=RGB255 dann HöheT.txt und wenn Pixelfarbe=RGB132 dann HöheN.txt ansonsten blank) oder so ähnlich?
    Oder kann ich in einem Schalter params1 und params2 vorgeben?


    Gruß
    ssnweb

  • Hallo ssnweb,


    also es ist so, dass nur eine Instanz des Koord-Servers laufen kann. Das ist auch so gewollt, da damit alles erledigt werden kann. Ein erneuter Aufruf von Koord im Servermodus beendet die laufende Instanz.


    Also nun gibt es folgende Möglichkeiten:


    1) Koord-Server 2-mal aufrufen, dann wird erst die laufende Instanz beendet und danach mit den neuen Parametern erneut gestartet.
    Das kannst Du mit einem BATCH-Aufruf (ab Koordversion V1.11 Rev.0) so ähnlich realisieren, wie ich es hier gezeigt habe.
    Du könntest die Umschaltung auch auf die Höhenanzeige selbst legen.


    2) Automatische Umschaltung mit Kontrollpixel, dann muss alles in einem Parameter stehen.
    Da ich jetzt nicht weiß, an welchem Pixel Du die Sonnenbrille erkennst und was genau die Farben des Kontrollpixels bedeuten, kann ich Dir nur mal prinzipiell sagen, wie ich das meine.
    Erst nochmal zur Erläuterung, wie PixWnd= funktioniert:
    Du definiert mit
    PixWnd=0,479,0,255,0,0\0,479,0,0,255,255\
    eine Anzeige mit der Fensternummer 0, die daran erkannt wird, dass die Farbe des Pixels 479,0 entweder RGB(255,0,0) oder RGB(0,255,255) ist.


    Du kannst die Anweisung aber erweitern, dass max. 2 Pixel gleichzeitig den angegebenen Farben entsprechen muss (UND-Verknüpfung). ODER-Bedingungen kannst Du mehrfach angeben.


    Ich nehme jetzt mal fiktiv an, dass Du am Pixel 0,478 erkennst, ob die Sonnenbrille an ist oder nicht, also das Pixel entweder RGB(132,132,132) oder RGB(255,255,255) annehmen kann. Dann würde das so aussehen:


    PixWnd=0,479,0,255,0,0,0,478,255,255,255\0,479,0,0,255,255,0,478,255,255,255\1,479,0,255,0,0,0,478,132,132,132\1,479,0,0,255,255,0,478,132,132,132\


    Es gibt nun also die Fensternummer 0 (MapView normal) und die Fensternummer 1 (MapView mit Sonnenbrille).
    Jetzt musst Du die Angaben auch noch bei ServWnd= ergänzen:


    ServWnd=height,354,246,100,24,-23,255,255,255,0x1{ %.0f m}\height,354,246,100,24,-23,132,132,132,0x4{ %.0f m}\|


    Nun sollte bei der Änderung des Farbwertes am Pixel 0,478 automatisch zwischen der 1. und 2. Höhenanzeige hin- und hergeschaltet werden.


    Viel Spaß!


    Gruß,
    Stefan

  • Hallo Stefan,


    ich mache es kurz - das Ergebnis Deiner großartigen Hilfe auch für andere die es haben möchten:


    Anzuwenden bei Sokobana V3 Beta 43, gehe davon aus dass es auch auf die Final so zu übertragen ist.
    Der Sonnenbrillenbutton (T bzw. N) ist sichtbar zu machen (wurde von Sokobana unsichtbar gemacht). Der Pixel 463,52 ( Tag=weiß 255,255,255 und Nacht=schwarz 0,0,0) muss angepasst werden auf die Koordinate wo Ihr den Sonnenbrillenbutton hingelegt habt. Durch die Farben weiß und schwarz ist man unabhängig von der Sonnenbrillenstärke, die man im V43 einstellen kann.


    Ein ComPort-Splitter ist Vorraussetzung. Wo Ihr den bekommt und wie Ihr den einstellen könnt hat StefanDausR bereits hier beschrieben: http://forum.pocketnavigation.de/thread.php?threadid=1093483&threadview=0&hilight=&hilightuser=0&page=2



    Folgendes ist in der 3_MapViewArea1.txt (\MortScript) bei TargetDistanceText anstatt der km-Anzeige (CurrentSpeedText) einzutragen. CurrentSpeedText .... kann somit gelöscht bzw. überschrieben werden.


    Hoehe // SD 20.02.2008
    {
    Class: LauncherButton;
    Coordinates: 445,0,2,2;
    //TextCoordinates: 5,2,12,12;
    //Text: "H";
    TextColor: 255,255,255;
    Font: 10;
    BGColor: 0,50,0,100;
    BGMode: opaque;
    FocussedColor: 0,0,0,100;
    DisableFocus: yo;
    launch: "\My Flash Disk\Sokobana\Koord2\koord465.exe";
    //params: "include=\My Flash Disk\Sokobana\Koord2\Hoehe.txt";
    params: "Window=0 KoordServ=1 PixWnd=0,282,256,255,255,255,463,52,255,255,255\0,286,256,255,255,255,463,52,255,255,255\1,463,52,0,0,0,418,245,0,0,0\ wndrefresh=1100 t=3 ServWnd=height,343,246,60,24,-2023,255,255,255,0x1,-1{ %.0f}\text,402,246,20,22,-8016,255,255,255,0x1,-1{ m}\height,343,246,60,24,-2023,132,132,132,0x4,-1{ %.0f}\text,402,246,20,22,-8016,132,132,132,0x4,-1{ m}\| GPSPort=com5:";


    }


    WindowCode Hoehe Ref schwarz
    {
    Class: SkinIcon;
    Coordinates: 418,245,2,2;
    BGMode: opaque;
    BGColor: 0,0,0;
    }


    Folgendes ist in der startfrommenu.mscr hinter
    #PlaySound ("\My Flash Disk\Sokobana\MortScript\success.wav" )
    einzutragen:


    MouseClick( 446, 1 )
    Sleep ( 1000 )
    MouseClick( 10, 240 )


    Danach muss die Pfeilansicht auf eine beliebige andere geändert werden,
    damit die PFSkin neu geschrieben wird. Das hat Sokobana sehr sehr gut
    gelöst. Danach kannst Du direkt wieder auf Deine gewünschte Pfeilansicht
    zurückschalten. Softreset und ...


    alles funktioniert voll automatisch und die Höhe ist nur beim GPS-Signal und nur in der mapview sichtbar. Bei Sonnenbrillenfunktion werden die Zahlen gleich der Uhr abgedunkelt.




    Tausen Dank nochmals an Dir für die großartige Hilfe.


    Gruß
    ssnweb :] : drink :] : drink :] : drink :] : drink

  • Hallo,


    habe den Code in den genannten Dateien eingefügt, dann den obligatorischen Softreset aber es es ändert sich nichts. Die Km- Anzeige bleibt in der Statuszeile und ich sehe nichts von einer Höhenangabe.


    Was hast du denn noch für Veränderungen vorgenommen?