Tomtom 5 Menu Editor für PPC - erste Beta ist da

  • @Loc2262


    Ich werde am WE mal die restlichen Befehle ausschnüffeln...
    (Mal sehn' wie weit ich komme ...)
    Das ganze fasse ich dann in Form einer "Forum TT5 SDK" Beschreibung
    zusammen.


    Gestern hab ich die Microsoft eMbedded Visual Tools 3.0 installiert.
    Wenn am WE noch Zeit ist, wollte ich mal anfangen eine Kommunikations -
    Klasse zu schreiben um mit TT zu "reden".
    Das ganze wird aus meiner Sicht nicht ganz einfach. Einfach ein File schreiben
    und mit while(1) warten das TT antwortet würde zuviel CPU Last bedeuten
    und die Oberfläche würde für die Zeit einfrieren ...
    Wie ich gesehen habe hat ja auch TT jeweils eine synchrone und asynchrone
    Befehlsabarbeitung implementiert.
    Im 3'er SDK steht, das TT eine WM_COPYDATA bei ext. Programmen schickt...
    mal sehn was bei der FileKommunikation rauskommt ...


    Mich würde ein "Gehe zu Koordinaten" Projekt reizen ...
    (auch wenn ich garnicht brauche ...)


    Bei der Idee unseren Quellcode untereinander auszutauschen bin ich dabei ...!


    Gruß
    bill

  • Zitat

    Original von bill_gehts?
    um mit TT zu "reden".
    Das ganze wird aus meiner Sicht nicht ganz einfach. Einfach ein File schreiben und mit while(1) warten das TT antwortet würde zuviel CPU Last bedeuten


    Och naja, ich habe eine while-Schleife mit Sleep(200) und dann test ob Antwortfile existiert benutzt. Das klappt prima. Alle 200ms mal nach nem File schauen ist 0 Rechenlast im Vergleich zu sonstigen Prozessen, und im Worst Case eine Fünftelsekunde zu lange auf Reaktion warten merkt der User nicht. Die Filemessages sind ja keine Dinge, die oft oder zeitkritisch stattfinden.


    Zitat

    und die Oberfläche würde für die Zeit einfrieren ...


    Das kannst Du per Aufruf von DoEvents (C#) oder ProcessMessages (Delphi) in jedem Schleifendurchlauf verhindern. :) Aber der Sleep muß in der Tat sein.

  • @Loc2262


    Ich dachte da eher an "MyFSD_RegisterFileSystemFunction"
    auf's Directory und die finished Message abwarten...


    oder mit SHChangeNotifyRegister und WM_FILECHANGEINFO warten ...
    (allerdings erst ab CE .NET 4.2)


    Gruß
    bill

  • Zitat

    Original von Loc2262


    Yepp: dafür sind die Befehle "Externes Programm 1" bis "Externes Programm 6" zuständig.


    Hmm, und wie teile ich dem Tool dann mit, welches programm genutzt werden soll?
    in der Menucommands.ini steht ja z.B.
    ...
    TASK_SDK1;Externes Programm 1
    ...


    In meinem TomTom.mnu habe ich auf der 4. Seite links oben auch das "1. Externe Programm", aber es passiert beim anklicken (natürlich) momentan gar nichts. Möchte das unter \TomTom\sdkregistry\TT5GoToCoordinates damit starten (was sonst ;)


    Nochwas: Starte ich TT5GoToCoordinates manuell und gebe eine Koordinate ein, springt TomTom in den Kartenmodus (sehr gut!), zeigt aber nicht die zuvor eingegebene Koordinatenstelle an!?


    Ansonsten. Super Tool bisher, jetzt muß es nur noch funktionieren ;)

  • @QWERTY


    Sind die coords.bmp und die GoToCoords.cap
    im \tomtom\sdkregistry Pfad abgelegt ?


    Tip:
    Die coords.bmp als Kopie in den Data Ordner kopieren
    und in TASK_SDK1.bmp umbenennen, dann erscheint im Menüeditor
    auch gleich das richtige Icon ..


    Grüße
    bill


  • Ja, sind alle da.
    Aber wo teile ich denn dem Tool mit, welches "externe" Programm gestartet werden soll? Sind ja bis zu 6 Prg. möglich.

  • Zitat

    Original von QWERTY
    Ja, sind alle da.
    Aber wo teile ich denn dem Tool mit, welches "externe" Programm gestartet werden soll? Sind ja bis zu 6 Prg. möglich.


    Eigendlich direkt gar nicht ...
    TT "ermittelt" das irgendwie, wie wissen wir noch nicht ...
    nach dem Alphabet scheint es nicht zu gehen ...


    Momentan ist der einzige Weg, um herrauszufinden welche Reihenfolge
    richtig ist, folgender:


    TT OHNE eigenes Menü starten (tomtom.mnu z.B. umbenennen)


    dann TT starten


    dann auf 4. Seite des Menü's gehen


    TASK_SDK1 ist der ganz links obere,
    TASK_SDK2 der dann rechts daneben
    usw.


    je nach Ansicht (Hoch oder Quer) sieht das so aus:


    1 2
    3 4
    5 6


    oder


    1 2 3
    4 5 6


    ...


  • Das ist so natürlich nicht ganz richtig. :]


    Es muss in dem Verzeichnis SDKRegistry lediglich eine *.CAP Datei existieren die folgende Sachen festlegt :


    In welcher Reihenfolge und von wo welches Programm gestartet wird:


    Beispiel (startet POIWarner und TT5GoToCoodinates):


    Version|100|
    AppName|POIWarner|
    AppPath|\SD Card\navigating.de POI-Warner TT5 Edition\|
    AppIconFile|poiwarner.bmp|
    AppMainTitle|POI-Warner|
    AppPort|2001|
    COMMAND|CMD||poiwarner.bmp|Zu POI-Warner wechseln|
    Version|100|
    AppName|TT5GoToCoords|
    AppPath|\SD Card\TT5GoToCoords\|
    AppIconFile|coords.bmp|
    AppMainTitle|Go To Coordinates|
    AppPort|2001|
    COMMAND|CMD||coords.bmp|Go To Coordinates|


    Wie man leicht erkennen kann ist hier eine genau beschriebene Befehlsabfolge einzuhalten und das hat nichts mit Zufall oder Ausprobieren zu tun ... so etwas gibt es in der binären Welt nicht. :D


    Ein neuer Eintrag beginnt immer mit:
    1. )Version|100|
    2.) Dem Applikationsnamen
    3.) Dem Pfad zu der aufzurufenden App
    4.) Dem Iconnamen für die Darstellung im Menü
    5.) Dem App-Titel (für die obere Bildschirmzeile nehme ich mal an)
    6.) AppPort|2001|
    7.) Dem eigentlichen Programmaufruf mittels COMMAND


    Ich hoffe ich habe jetzt keinen Fehler bei der Erklärung gemacht, aber so klappt es bei mir.
    Kleiner Tipp :
    Da POIWarner beim Start bzw. spätestens beim Wechsel zur Ueberwachung eine eigene CAP-Datei namens POIWarner.cap NEU anlegt und in recht rüder Manier alle zusätzlichen Eintrag ausser den vier eigenen Programmaufrufen damit wieder entfernt setzt die fertige CAP-Datei auf SCHREIBSCHUTZ. Den Namen POIWarner.cap habe ich beibehalten damit POIWarner die beim Start nicht vermisst und lediglich den einen Eintrag für TT5GoToCoords ergänzt.


    Das sieht wirklich gut aus und funktioniert.



    Alle Experten mit meiner Erklärung einverstanden ?
    Dann : drink

    2 Mal editiert, zuletzt von jeramy ()

  • innerhalb EINES Cap -Files hast Du recht....


    aber installiere mal 2 oder 3 Verschiedene ...


    z.B. POIWarner.cap GoToCoordinates.cap ...


    was macht er dann ???


    Gruß
    Bill


  • Da uns, wenn ich richtig verstanden habe, sowieso lediglich
    max. 6 externe Programmaufrufe zur Verfügung stehen, warum nicht
    alle Aufrufe der gewünschten Reihenfolge nach in EINE CAP-Datei
    schreiben ? Wie gesagt, bei POIWarner halt nur auf Schreibgeschützt
    und schon ist die Wurst gegessen. ;D

    Einmal editiert, zuletzt von jeramy ()

  • Zitat

    Original von jeramy
    Da uns, wenn ich richtig verstanden habe, sowieso lediglich
    max. 6 externe Programmaufrufe zur Verfügung stehen,


    Neinnein, das siehst Du falsch. Ich hatte nur keinen Bock, mehr als 6 Einträge in das File zu machen. :) Der Menübefehl TASK_SDK wird aber sicherlich "beliebig viele" Kommandos akzeptieren.


    Es steht Dir also völlig frei, die menucommands.ini entsprechend zu erweitern!

  • Zitat

    Original von Loc2262


    Neinnein, das siehst Du falsch. Ich hatte nur keinen Bock, mehr als 6 Einträge in das File zu machen. :) Der Menübefehl TASK_SDK wird aber sicherlich "beliebig viele" Kommandos akzeptieren.


    Es steht Dir also völlig frei, die menucommands.ini entsprechend zu erweitern!


    O.K., selbst wenn es 1000 externe Programme wären (wer braucht die schon) kann man aber doch alle Einträge mit EINER CAP-Datei unterbringen und hat dann doch automatisch auch seine Reihenfolge.
    Darum ging es doch, oder ? ;)

  • Super, das klappt nun:
    Aus dem TT-Menu starte ich das TT5GoTo-Programm, gebe eine Koordinate ein, die Anzeige geht zum Scroll-Modus von TT5.


    Aber ich sehe nicht die Lage der eingebenen Koordinaten, sondern eine ganz andere. Ändere ich die Koordinaten nochmals in TT5GoTo, erscheint wieder die wie zuvor falsche Stelle in der Karte ???
    Werden die Koordinaten nicht korrekt an TT5 übertragen, oder nur 1x pro Start des Hauptprogramms??

    Einmal editiert, zuletzt von QWERTY ()

  • @QWERTY: bitte neu downloaden, ich hatte noch ein Bugchen in einem Rundungsbefehl, das ratzekahl die Winkelminuten und -sekunden weggerundet hat. ;)

  • Zitat

    Original von Loc2262
    @QWERTY: bitte neu downloaden, ich hatte noch ein Bugchen in einem Rundungsbefehl, das ratzekahl die Winkelminuten und -sekunden weggerundet hat. ;)


    Kurzer erster test:
    Jetzt siehts gut aus!
    Auch kleine änderungen an den Koordinaten wirken sich als Positionsänderung in TT5 aus, was zuvor (meiner Meinung nach) nicht der Fall war und ja eigentlich auch nichts mit Rundungsproblemen allein zu tun haben konnte. Oder?