Kapitel 4 - was ist und macht PMB ?

PMB ist eigentlich nichts anderes als eine Ansammlung nützlicher Tools, die, in bestimmter Reihenfolge aufgerufen, das "eine" oder "andere" machen und/oder automatisieren.

Es gibt eigentlich zwei Modifikationsmöglichkeiten am 7934:

  • kompletter Austausch der Original-Software
  • Erweiterung der Original-Software


  • Die erste Möglichkeit wäre natürlich die optimalste und wurde auch von mir ursprünglich angestrebt bzw. lief auch schon einwandfrei. Diese Variation hat allerdings einen entscheidenden Knackpunkt: Tauscht man die Original-Software aus, hat man keine Möglichkeit mehr, die Moodlights des 7934 an den Seiten zu steuern, was bedeutet, das diese immer an sind und rot leuchten. Die meisten wird das nicht stören, mich eingenommen, allerdings gibt es gewisse Leute in grün, die damit ganz und gar nicht einverstanden sind, insbesondere, wenn das Navi per Saugnapf nachts an der Windschutzscheibe hängend betrieben wird.

    Also bleibt (erstmal) nur die Erweiterung der Original-Oberfläche! Dies wird realisiert, indem der unwichtigere Bilder-Viewer gegen eine andere Applikation ausgetauscht wird. Dies macht PMB.

    Mit einem reinen Austausch ist es allerdings nicht ganz getan, weil dann die eingangs des Workshops genannten Probleme mit einer eventuell fehlenden, aber benötigten Taskbar wie auch die fehlende Vollbilddarstellung zum Tragen kommen. Hier musste Abhilfe geschaffen werden.

    Beim Start des 7934 wird nach erfolgreichem "Hochfahren" des Betriebssystems Windows CE automatisch die Datei /My Flash Disk/Shell.exe ausgeführt, die wiederum noch die BatteryMonitor.exe nachlädt. Hierbei wird dann ebenfalls automatisch von der Shell.exe die Sprache des "Windows-Users" (nicht des Windows CEs selbst!) auf Deutsch umgestellt (bzw. je nach gemachter Einstellung auch andere Sprachen). Diese Spracheinstellung wird zum einen von der Shell.exe selbst zur Anzeige der Menüs benutzt wie auch von der Navigationssoftware.

    Um nun den Start etwas umgestalten zu können, hat zuerst Daniel Schumann ein Programm namens MultiRun programmiert, welches später allerdings durch RunIni von Torsten Kubinski ersetzt wurde. Beide Programme machen aber eigentlich das gleiche: Man kann über eine dazugehörige INI-Datei mehrere Programme starten. RunIni wird bei der Installation von PMB als Shell.exe im Verzeichnis /My Flash Disk installiert und die Original-Datei wird in ShellOriginal.exe umbenannt. RunIni wurde so programmiert, das beim Programmaufruf zuerst eine eventuell beim Start mit übergebene INI-Datei ausgewertet wird, wurde keine angegeben, wird nach einer mit dem gleichen Namen wie die ausführbare Datei gesucht (in unserem Fall heißt RunIni auf dem 7934 ja Shell.exe, also wird nach einer Shell.ini gesucht), ist eine solche ebenfalls nicht vorhanden, wird eine RunIni.ini gesucht und ggf. ausgeführt.

    Der Aufbau der INI für RunIni ist recht einfach:


    [RUN]
    app1= "\My Flash Disk\Tools\ShowTaskBar.exe /hide"
    app2= "\My Flash Disk\Tools\ns.exe /mo '\My Flash Disk\Tools\nsscript\install.ns'",hide
    app3= "\My Flash Disk\ShellOriginal.exe"


    Wie man hier erkennt, werden nacheinander bzw. gleichzeitig die Programme ShowTaskBar.exe, ns.exe und ShellOriginal.exe gestartet.

    ShowTaskBar.exe /hide
    Dieser Befehl bewirkt das explizite Ausblenden einer eventuell vorhandenen Taskbar, gleichzeitig wird auch der Bildschirm in den Vollbildmodus versetzt. Man hätte hier das im Forum angebotete SetFullScreen.exe verwenden können, aber das wäre nur ein weiteres Tool in PMB gewesen. Torsten war so freundlich und hat sein ShowTaskbar um dieses Feature erweitert.

    ns.exe install.ns
    nScriptm (ns.exe) hat gewisse Ähnlichkeiten mit einem "DOS-Fenster" unter Windows. Man kann dort Skripte ausführen. Beim Start wird ns.exe mit dem Parameter install.ns aufgerufen. install.ns ist nichts anderes als eine Skriptdatei, die folgendes macht:

  • verknüpft ns.exe in der Registry mit Dateien, die die Endung .ns haben, so das man diese direkt durch Aufruf ausführen kann
  • verknüpft TCPMP mit den Formaten, die TCPMP wiedergeben kann
  • setzt diverse Einstellungen von TCPMP (wie automatisches Vollbild beim Start etc.)
  • setzt diverse Einstellungen für den Total Commander (z.B. Sprache Deutsch)
  • verknüpft PocketXpdf mit PDF-Dateien, so das diese ebenfalls direkt aufgerufen werden können


  • ShellOriginal.exe
    ist nichts anderes als die Original-Oberfläche des 7934, die gestartet wird, um die Moodlights je nach gemachter Einstellung anzusteuern

    Nachdem die Original-Oberfläche nun sichtbar ist, erkennt man, das der Menüpunkt "Bilder" gegen "Extras" ausgetauscht wurde. Hierbei hat sich allerdings nur die Beschriftung geändert (zu finden in der Datei /My Flash Disk/resources/localization/strings_Shell_Default_German.txt), die eigentliche Funktion, nämlich der Aufruf der PictureViewer.exe bleibt der gleiche.

    PMB hat diese allerdings ebenfalls ausgetauscht gegen eine für PMB modifizierte Version von SystemInformation, einem Programm von Daniel Schumann. Dieses Programm wurde ursprünglich für den Desktop von Windows CE programmiert und stellt dort z.B. Informationen wie Speicherplatz, Batterieladezustand etc. zur Verfügung. Die Software kann aber zusätzlich auch Buttons in Form von quadratischen 32 Bit-Icons anzeigen und darüber dann Programme starten. Hierzu benötigt das Programm beim Start ebenfalls eine INI-Datei, in der wiederum weitere INI-Dateien angegeben werden, die dann für die Darstellung der einzelnen Informationen oder in unserem Fall Buttons zuständig sind.

    Beim Klick auf "Extras" wird also nun die PictureViewer.exe respektive umbenannte SystemInformation.exe ausgeführt und verarbeitet die Default-INI namens SysInfoSettings.ini:


    Tools/SysInfoInis/M01-00-Space.ini
    Tools/SysInfoInis/M01-01-ButtonSpeedLimit.ini
    Tools/SysInfoInis/M01-02-ButtonGPSTacho.ini
    Tools/SysInfoInis/M01-03-ButtonMediaPlayer.ini
    Tools/SysInfoInis/M01-04-ButtonBack.ini
    Tools/SysInfoInis/M01-05-ButtonExplorer.ini
    Tools/SysInfoInis/M01-06-ButtonSystem.ini
    Tools/SysInfoInis/M01-07-Space.ini



    Hier werden also nacheinander die angegebenen INI-Dateien eingelesen und verarbeitet. Als Beispiel zum Aufbau dient hier mal die Datei M01-01-ButtonSpeedLimit.ini:


    GLOBALSETTINGS
    ShowMessage = 0
    X = 10
    Y = 0
    Width = 100
    Border = 0
    BackgroundColor = A81830
    Refresh = 0
    Distance = 0

    SPACE
    Space=20

    ICONXPBUTTON
    Command = "\My Flash Disk\SpeedLimit\Register.exe"
    SizeNormal = 100
    SizePushed = 100
    ScaleAlpha = 100
    IconNormal = \My Flash Disk\Tools\SysInfoInis\Buttons\ButtonSpeedLimitNormal.ico
    ScaleAlpha = 100
    IconPushed = \My Flash Disk\Tools\SysInfoInis\Buttons\ButtonSpeedLimitPressed.ico


    Die Beschreibung der einzelnen Parameter könnt ihr der Original-Dokumentation von SystemInformation auf gpstacho.bettersoft.de entnehmen, hier interessant sind die Parameter Command, IconNormal und IconPushed, die aber anhand der Angaben selbsterklärend sein dürften.

    Im neuen Menü werden aber neben Programmen selbst, wie hier SpeedLimit, von anderen Buttons auch Skripte gestartet, z.B. zum Start von GPS-Tacho und auch Total Commander:

  • GPS-Tacho funktioniert nicht zusammen mit der Navigationssoftware. Diese läßt sich, einmal gestartet, mit Bordmitteln nicht mehr beenden. Auch wenn es den Anschein hat, das man diese mit mehrfachem Drücken der roten Taste beendet hat, läuft diese trotzdem noch im Hintergrund und blockiert den Comport zum GPS-Empfänger, den allerdings GPS-Tacho benötigt. Das Skript prüft also VOR dem Start von GPS-Tacho, ob die Navigationssoftware noch läuft und gibt, sofern dies zutrifft, einen Warnhinweis aus mit der Möglichkeit, die Navigationssoftware zu beenden.


  • Der Total Commander macht nur Sinn, wenn man neben dem Programm auch die Windows Taskbar mit Möglichkeit zur Einblendung der Tastatur hat. Deshalb startet ein Skript zuerst ShowTaskbar mit Parameter /show, anschließend den Total Commander, wartet im Hintergrund so lange, bis der Total Commander wieder beendet wurde und blendet dann die Taskbar per ShowTaskbar mit Parameter /hide wieder aus.
  • Etwas kniffliger ist die Darstellung des zweiten Menüs "System". Hier habe ich mir überlegt, das man den aktuellen Zustand der 3 Einstellungsmöglichkeiten

  • AutoLog (erzeugt im Verzeichnis der Navigationssoftware ein Logfile mit GPS-Daten zwecks späterer Auswertung am PC)
  • rawGPS (Anzeige der realen Position auf der Karte durch ein kleines Quadrat)
  • AutoStVO (automatisches Betätigen der OK-Taste nach dem Einschalten des Gerätes, nicht beim Aufwachen aus dem Suspend-Modus!)


  • irgendwie darstellen muss. Als Lösung empfand ich die Variante, das bei eingeschaltetem Feature die Anzeige in Form von "eingedrückten" Buttons erfolgen sollte. Deshalb werden beim Start des System-Menüs die aktuellen Einstellungen aus den Dateien ausgelesen, ausgewertet und die INI-Dateien zur Anzeige der Buttons werden dynamisch im RAM (Verzeichnis /Temp) erzeugt und anschließend von SystemInformation eingelesen und ausgeführt. Bei einer Änderung an einer der drei möglichen Optionen wird wiederum SystemInformation, welches ja die Buttons darstellt, beendet, die Änderung wird per Skript durchgeführt, die INI-Datei des einen Buttons wird neu erzeugt und anschließend SystemInformation (dann ja mit einer neuen INI) neu gestartet.

    Richtig knifflig ist die Anzeige der verfügbaren Film- und Video-Dateien auf der /Storage Card. Hier werden anhand der Dateiendungen (siehe Datei /My Flash Disk/Tools/nsscript/avisearch.ns, Erweiterung des Suchmusters ohne weiteres möglich über die Variable var m[] in der Funktion "main") wie z.B. *.avi alle Dateinamen und Pfade in einem Array gespeichert, anschließend aufgrund der Anzahl an Einträgen in diesem Array Menüs für SystemInformation erzeugt, für die Anzeige der Dateien auf auf einem Bildschirm werden dynamisch 4 INI-Dateien per Skript generiert, bei 20 Film- und Videodateien somit dann schon 16 Dateien. Je nach Anzahl konfigurierter Dateiendungen und gefundener Dateien kann der Aufbau des Menüs schonmal ein paar Sekunden dauern. Weil SystemInformation sich selbst bei Ausführung des Skriptes beendet, sieht man während der Ausführung des Suchskriptes die Original-Oberfläche. Um dort vorschnelle Tipperei zu vermeiden, hat Daniel Schumann ein weiteres kleines Tool beigesteuert, nämlich ShowCursor.exe, was nichts anderes macht, als die bekannte Windows-Sanduhr in Form der 4 kleinen Quadrate anzuzeigen.

    Die Generierung von INI-Dateien oder auch Änderung innerhalb einer solchen per Skript ist eigentlich recht einfach, allerdings stößt man hier auf das nächste Problem, die Dateien werden ganz normal als Text generiert, speziell SystemInformation erwartet aber INI-Dateien im Unicode-Format. Hier hat dann wiederum Torsten Kubinski mit einem eigens dafür programmierten Tool namens Unicode.exe ausgeholfen, welches genau das macht, eine vorhandene Textdatei in eine umzuwandeln, die dem Unicode-Format entspricht.

    Die Bedienung des Media Players wird beim "Hochfahren" des 7934 durch das Setzen diverser Registry-Einträge wesentlich komfortabler. Bei Auswahl einer Video-Datei oder auch Playliste über das Menü wird diese an den Media Player übergeben, der startet, sofern möglich (= Video nicht zu klein), direkt im Vollbildmodus und spielt die Datei ab. Nach kompletter Wiedergabe beendet sich der Media Player von selbst und man landet wieder im Menü. Möchte man die Wiedergabe vorzeitig abbrechen, braucht man nur die rote Taste drücken und landet ebenfalls wieder im Auswahlmenü!

    Die ganze Oberfläche und auch der Funktionsumfang von PMB ist natürlich erweiterbar ... viel Spaß und Erfolg beim Ausprobieren!

    zurück