Programm zur Koordinateneingabe

  • Hallo Stephan,


    vielleicht liegt es an den Programmen selbst, dass das nicht richtig funktioniert. Welche Programme startest Du denn?


    Gruß,
    Stefan


    Hallo Stefan,


    in erster Linie Mort-Scripte für meine Buttonsteuerung in der Map.
    Bei Glopus und NaviPOWN müsste ich erst noch mal nachsehen.


    Gruß
    Stephan

  • OK es geht, Stefan.
    Hatte es auch in 2 Zeilen drin.


    Obwohl sich mein "Umweg" als praxisgerecht erwiesen
    und auch einen logischen Aufbau hat.


    Gruß
    Stephan

  • Hallo Stefan,
    kannst Du mir erklären, wie ich es am elegantesten hin bekomme? Ich habe folgendes Problem:


    Ich will zwei Aktionen mit Koord465 auslösen, beide Parameter sollen aber lt. deiner Beschreibung an letzter Stelle der Befehlszeile stehen. In meinem Fall sind es die "goto="-Funktion und das setzen eines Reg-Eintrags.


    Beispiel:


    HomeButton
    ...
    launch: "$KOORD_PFAD$";
    params: "window=4 LKlick1=100 x1=440 y1=225 goto=$ZIEL_PFAD$home.3na";


    zusätzlich soll die Aktion untergebracht werden:
    RegKeyMode=1 RegKey=Software\sokobana,ClearVeto


    Ich habe nun schon überlegt, auf der Seite "neues Ziel", also dort, wo LKlick1 seinen Klick macht, einen zusätzlichen unsichtbaren Button mit dieser Koord-Funktion einzubauen. Ich habe dann also LKlick1 und LKlick2. Oder ich mache den OK-Button auf den LKlick1 klickt zum Koord-Launcher-Button.


    Aber das wird vermutlich nicht gehen, da dann ja zwei Koord-Instanzen gleichzeitig aktiv wären, oder (jedenfalls bei den getrennten LKlicks)?
    Würde es gehen, wenn ich das mit zwei unterschiedlichen Koord-Versionen auslöse. Du weißt ja, dass ich die "Standardfunktionen" mit einer älteren Koord-Variante (ohne Server) auslöse, die Server-Funktionen mit der jeweils neusten Version. Beide befinden sich in unterschiedlichen Verzeichnissen auf der MFD.


    Vielleicht gibt es das Timing-Problem ja auch nur in meinem Kopf, nicht aber in der Realität ... hehe
    Du wirst mir das schon erklären, stimmts?


    Gruß sokobana

  • Hallo sokobana,

    Ich will zwei Aktionen mit Koord465 auslösen, beide Parameter sollen aber lt. deiner Beschreibung an letzter Stelle der Befehlszeile stehen.

    upps, da sind noch Beschränkungen im Programm, die ich mal abändern sollte...


    Aber bis dahin ist das einfachste eine Koord-Batch-Datei (ab V1.11 Rev.0) zu verwenden, also so:


    Code
    HomeButton
    ...
    launch: "$KOORD_PFAD$";
    params: "window=0 batch=\Storage Card\Programme\KOORD\MyBatch.txt|";


    In der MyBatch.txt (oder wie sie auch immer heißt) schreibst Du dann die Koord-Befehle in der Reihenfolge, wie sie nacheinander abgearbeitet werden sollen, also z.B. so:


    Code
    window=0 RegKeyMode=1 RegKey=Software\sokobana,ClearVeto
    window=4 LKlick1=100 x1=440 y1=225 goto=$ZIEL_PFAD$home.3na


    So laufen zwar kurzzeitig 2 Koord-Instanzen gleichzeitig, aber das dürfte nicht problematisch sein.
    Die eine arbeitet die Batch-Datei ab und ruft für jede Zeile eine zweite Instanz auf. Die nächste Zeile wird erst dann weiterverarbeitet, wenn die vorige Instanz geschlossen ist.


    Gruß,
    Stefan

  • Sieht ja richtig genial aus, Stefan! :thumbup:
    Probiere ich am WE gleich aus.


    Wenn Du es in einer neuen Version dann anders realisierbar machst, gib mir Bescheid.
    Ich merke manchmal garnicht, dass da was neues von Dir vorhanden ist. ;(


    DANKE
    und Gruß sokobana

  • ... und dann hätte ich noch einen Wunsch für eine neue Funktion, falls es die nicht schon gibt. ;)


    Ich würde gerne meine neue Funktion "Fix My Car" verbessern (bin heute irgendwie nicht ganz zufrieden mit meiner Lösung).


    Ich würde gerne nach dem Aufruf einer noch nicht existierenden 3na-Datei, z.B. FixMyCar.3na folgende Funktion in dem aufspringenden Koordprogramm vorfinden:
    - wenn ich nichts eintrage in das Formular und frech OK drücke, sollte in Zukunft nicht mehr ein Fehler-Beep kommen, sondern die aktuelle Position in die 3na-Datei eingetragen werden.


    Würdest Du das hinbekommen?
    Gruß sokobana

  • Hallo sokobana,

    in der Registry finde ich manchmal unter Koord Positionsangaben gespeichert:




    - wann werden die geschrieben, bzw. was löst das Schreiben aus?

    das ist die letzte bekannte Position, die der Koord-Server erhalten hat. Sie wird geschrieben, wenn folgende Bedingungen erfüllt sind:
    - Koord-Server läuft
    - Koord-GPS-Empfang aktiviert
    - mind. einmal GPS-Empfang seit Serverstart vorhanden (Sat-Fix)
    - im zeitlichen Abstand von 5s


    Gruß,
    Stefan

  • Hallo Stefan


    Ist es möglich die Script Aufrufe anstatt mit EXE mit MSCR zu starten ?


    window=0 SendKey=\l\My Flash Disk\programme\mortscript\M_SkinMenu.exe|


    so nimmt Koord es ja nicht an.


    window=0 SendKey=\l\My Flash Disk\programme\mortscript\M_SkinMenu.mscr|


    per Navi Explorer kann ich die mscr starten , soweit habe ich es schon , auch bei Navi Neustart, über eine lua GP5.


    so könnte ich die zugehörigen EXE zum mscr beim MortScript weg lassen und hätte eine menge Files gespart .


    Gruß Manni

  • Hallo Manni,


    ich kenne MS zu wenig, aber was passiert denn genau, wenn man eine *.mscr "startet"?
    Ich denke, da wird die Mortskript.exe mit der *.mscr als Parameter aufgerufen, oder?


    Ohne es getestet zu haben, sollte es aber so funktionieren:
    window=0 SendKey=\l\My Flash Disk\programme\MortSript.exe:"\My Flash Disk\programme\mortscript\M_SkinMenu.mscr"|


    wobei ich nicht genau weiß, ob das mit den Anführungszeichen so funktioniert.


    Gruß,
    Stefan


    Edit: \ ergänzt!

    Einmal editiert, zuletzt von StefanDausR ()

  • Hallo Stefan


    Es hat geklappt , fehlte nur ein \ , habe ich einfach mal eingesetzt und es geht.



    Das in der lua k110mort.lua , kann auch anders lauten.
    -- ---------------------------------------------------------------------------
    -- ---------------------------------------------------------------------------
    -- --- Starting Koord Menu
    -- ---


    local shell = Shell:new();


    if shell:Execute( "file:///My Flash Disk/programme/MortScript/MortScript.exe", "" ) == false then


    end





    Das ist das erste Kord-Menü welchen mit k100menu.lua gestartet wird,
    der MouseKlick dient nur dem wegklicken des MortScript-Hinweisfenster.
    Das kann ich nicht in der lua , oder doch?

    #########################################
    # HauptMenu by Navirunner #
    #########################################


    sleep (300)
    Mouseclick ( 296, 78 )
    sleep (300)


    Run ("\My Flash Disk\programme\koord465.exe" , "param: include=\My Flash Disk\programme\HauptMenu\HauptMenu1.txt")







    Das für die Script- Aufrufe im Koord_Menü, kappt prima , danke Stefan


    window=0 SendKey=\l\My Flash Disk\programme\MortScript\MortScript.exe:"\My Flash Disk\programme\MortScript\M_SkinMenu.mscr"|



    jetzt hast Du mir auf einem Schlag so ca. 68 EXE Files gespart . :D
    jetzt sind es 71 .EXE Files . :D


    Danke danke Stefan


    Gruß Manni

  • Hallo Manni,


    schön dass es klappt!


    ich habe nicht ganz genau verstanden, was Du noch wissen wolltest, nur so viel:


    Natürlich kannst Du auch Klicks in der lua senden. lua-Dateien sind -genauso wie MortSkript- Skripte, die durch einen Interpreter abgearbeitet werden. lua ist sogar recht mächtig, ich weiß nur nicht genau, was hier alles implementiert wurde.


    Hier mal ein Beispiel, wie ich den VirtCom nach einen HR automatisch neu installieren und einrichten lasse (k20virtcom.lua:(


    local registry = RegistryAccess:new();
    local shell = Shell:new();


    -- -----------------------------------------------------------------------
    -- --- Check if VirtCom isn't already installed
    -- ---
    if (registry:openKey(eRegKey_HKCU, "Software\\Hasotec") == false) then
    shell:Execute( "file:///My Flash Disk/programme/koord465.exe", "window=0 batch=/My Flash Disk/programme/VirtComBatch.txt|" );
    -- --- Wait until Koord has finished with clicks
    shell:Sleep(1200)
    shell:Execute( "file:///My Flash Disk/programme/koord465.exe", "Window=0 SetSN=0 KoordServ=1 GPSPort=com5:,4800|" );
    -- --- Wait until SN is OFF
    shell:Sleep(3000)
    end


    shell:delete();
    registry:delete();



    dazu gehört noch die VirtComBatch.txt:
    // VirtCom neu installieren und auf COM5: einstellen
    window=0 copy=\Storage Card\Programme\VirtCom\VirtComNG.dll|\Windows\VirtComNG.dll|
    window=0 copy=\Storage Card\Programme\VirtCom\VirtComMgr.exe|\Program Files\VirtComMgr.exe|
    window=0 copy=\Storage Card\Programme\VirtCom\aygshell.dll|\Program Files\aygshell.dll|
    window=0 SendKey=\l\Program Files\VirtComMgr.exe|\c300,30,30\0x26\0x26\0x26\0x26\0x28\0x0D\0x09\0x26\0x26\0x26\0x26\0x26\0x28\0x28\0x28\c0,220,50\c0,180,50\c0,440,25


    also in Deinem Fall könnte die lua-Datei so aussehen:


    -- --- Starting Koord Menu
    -- ---


    local shell = Shell:new();


    shell:Sleep(5000);


    if shell:Execute( "file:///My Flash Disk/programme/koord465.exe", "window=0 SendKey=\c300,296,78\|" ) == false
    then


    end


    shell:Sleep(300);


    if shell:Execute( "file:///My Flash Disk/programme/koord465.exe", "include=/My Flash Disk/programme/HauptMenu/HauptMenu1.txt" ) == false
    then


    end


    Du musst Bei den lua-Dateien ganz besonders aufs timing achten, da nicht gewartet wird, bis ein Programm fertig ist, sondern sofort weitergearbeitet wird. Daher habe ich in kritischen Fällen ein shell:Sleep(xxxx); eingebaut.


    Es wird nicht einmal gewartet, bis eine lua fertig abgearbeitet ist! Daher ist die Reihenfolge der Dateien (lua-Dateiname) mit Vorsicht zu genießen!


    Gruß,
    Stefan

  • Danke Stefan!




    Edit: Fehler beim Zitieren behoben

    Einmal editiert, zuletzt von sokobana ()

  • Hallo zusammen,


    eine neue Koord-Testversion steht zur Verfügung!


    Neben ein paar Fehlerbeseitigungen, kann man nun die

    • Bildschirm-Orientierung einstellen und
    • Sprach-Ausgaben mit der freien TTS-engine eSpeak machen.


    Nähere Infos auf meiner HP.


    Gruß,
    Stefan