POIObserver Log via Koordinaten-Tool oder MortScript

  • Hallo zusammen,


    ich will mich schon seit einiger Zeit daran zu machen, die Log-Funktion des POIObservers via MortScript leichter bedienbar zu machen. Zur Erklärung: mit dem POIObserver kann man wie auch über die "Tracks"-Ordner von GoPal Routen aufzeichnen und anschließend wieder abspielen. Gegenüber der GoPal-Funktion hat dieses Verfahren den Vorteil, dass man zum einen auch den POIObserver selbst testen kann (vom GoPal-Tracking bekommt er ja nichts mit) und zum anderen auch andere Programme als GoPal mit der Simulation "füttern" kann.


    Nun zum Problem:
    Zum Start der Simulation muss man
    1) einen Button im POIObserver-Fenster drücken; dadurch geht ein Dialogfeld auf,
    2) in welchem man einen Namen eintragen muss (voreingetragen ist zwar der Zeitstempel, leider aber ohne Dateiendung) und dann
    3) - und das ist für mich der Teil, der am meisten nervt - ein winzig kleines "OK"-Feld rechts oben anklicken.


    Zum Ende der Aufzeichnung muss der Button aus 1) wieder gedrückt werden.


    Vor diesen Aktionen muss natürlich das POIObserver-Fenster in den Vordergrund geholt werden, wenn das Programm schon läuft.
    Läuft es noch nicht, muss es gestartet werden (normalerweise wird keine 2. Instanz gestartet, wenn bereits eine läuft; Ausnahme: wenn man den POIObserver mit einem Parameter startet, dass er minimiert ausgeführt wird - was ganz praktisch ist, ich aber aus dem Grund, dass dann ggf. bei laufendem Programm eine 2. Instanz gestartet wird, nicht tue).


    Mit MortScript liesse sich das alles sicherlich automatisieren, bisher hatte ich allerdings keine Zeit, mich in die Syntax einzuarbeiten. Ausserdem wollte ich die Dokumentation des Koordinatentools abwarten, da ich vermutete, dass sich das Problem auch mit dem inzwischen sehr mächtigen Koordinatentool lösen lässt. Nachdem nun die Doku online ist, muss ich ehrlich zugeben, dass ich es noch immer nicht blicke und doch eher wieder dazu tendiere, mich in MortScript einzuarbeiten - was aber schade wäre, wenn das Problem auch mit dem Koordinatentool (was ohnehin schon auf vielen 465ern und 470ern vorhanden sein dürfte-deshalb poste ich auch bewusst hier) gelöst werden könnte.


    Deshalb meine Fragen:
    1) Seht ihr das o.g. Problem als mit einem der beiden Programme lösbar an bzw.
    2) Hat das vielleicht sogar schon jemand umgesetzt?


    Gruß, kleriba

  • Hallo kleriba,


    warum frägst Du mich nicht direkt?
    Da ich den PoiObserver nicht installiert habe kann ich das auch nur theoretisch beantworten.


    Worin liegt nun genau Dein Problem? Mit dem Befehl SendKey= müsste das eigentlich lösbar sein: Du kannst Klicks an best. Stellen senden, Du kannst ein Programm starten, Du kannst ein Fenster in den Vordergrund holen und eine (feste) Texteingabe müsste auch gehen.


    Vielleicht können wir das Problem ja gemeinsam lösen...


    Gruß,
    Stefan

  • Hallo Stefan,


    ich wollte Dich (noch) nicht direkt belästigen, da es mir erst mal darum ging zu sehen, ob sich vielleicht schon jemand dieser Sache angenommen hat und ich für diesen Fall das Rad nicht neu erfinden (=mich in die Befehlsstruktur einarbeiten) wollte.


    Ich werde mich aber heute Abend mal daran versuchen.


    Zum Einstieg gleich die erste Frage:
    Wie gehe ich das Problem an, den POIObserver nicht ein 2. Mal zu starten?
    Sendkey=\f funktioniert doch nur, wenn das Programm schon läuft und SendKey=\l\...\POIObserver.exe| startet das Programm wahrscheinlich ein 2. Mal, oder?


    Danke + Gruß,
    kleriba


    PS: Wenn es Dir zuviel wird: hier geht es nicht um Überlebensnotwendige Fragen, sondern um eine Spielerei meinerseits.

  • Hallo kleriba,

    Zitat

    Original von kleriba
    Wie gehe ich das Problem an, den POIObserver nicht ein 2. Mal zu starten?
    Sendkey=\f funktioniert doch nur, wenn das Programm schon läuft und SendKey=\l\...\POIObserver.exe| startet das Programm wahrscheinlich ein 2. Mal, oder?


    Du hast Das schon ganz richtig verstanden, aber mit dem launch-Befehl (\l....|) sollte es unter der Voraussetzung funktionieren, dass der POIObserver das Vorhandensein der Instanz selbst testet! Du hattest doch etwas geschrieben, dass das so sei, wenn er ohne Parameter gestartet wird.
    Einen Befehl der Art "Wenn Fenster nicht existiert, dann starte Programm" habe ich (noch) nicht implementiert.


    Aber teste einfach mal und melde Dich, wenn Du nicht weiterkommst!


    Gruß,
    Stefan


    P.S.: Die ganze TCPMP-Steuerung aus dem wind-hund Skin funktioniert so!

  • Hallo Stefan,


    das ist richtig. Allerdings wollte ich den POIObserver eigtl. schon minimiert starten und dann erkennt er komischerweise die 1. Instanz nicht. Aber ich bastel' jetzt erst mal.


    Gruß!

  • Zitat

    Original von kleriba
    dann erkennt er komischerweise die 1. Instanz nicht.


    Du musst hinter \f den genauen Fensternamen angeben, so wie er in der Taskleiste steht. Falls der länger ist, so kannst Du den Taskmanager aufrufen (window=0 taskmanager=1) und dir den kompletten Fensternamen notieren.


    Gruß,
    Stefan

  • Hallo Stefan,


    Du hast mir Deine Hilfe angeboten, jetzt komme ich auch darauf zurück. Mein begrenzter Verstand rafft offenbar die Funktionsweise des Koordinatentools wirklich nicht.


    Also: Ich habe den POIObserver schon händisch gestartet, die Funktion SendKey=\f sollte also zunächst mal reichen.
    Ich möchte nun aus GoPal
    1) den POIObserver in den Vordergrund holen
    2) nach einer Wartezeit von 1000ms einen Klick bei x=150 y=10
    3) nach einer Wartezeit von 1000ms einen Klick bei x=150 y=175
    4) dort den Text ".txt" einfügen (dort steht schon ein Dateiname, allerdings ohne die gewünschte Endung)
    5) nach einer Wartezeit von 1000ms einen Klick bei x=430 Y=25 (das ist der OK-Button
    6) GoPal wieder in den Vordergrund


    Ich bin schon bei 1) mit folgendem Versuch gescheitert:
    launch: "$KOORD_PFAD$";
    params: "window=0 SendKey=\fPOI Observer LKlick=5000 x=50 y=10 d=500";


    Ist hier Hopfen und Malz verloren oder kann man auch mir das noch beibringen...?


    Vielen Dank schon Mal,
    kleriba

  • OK, ein bißchen weiter bin ich nun selbst gekommen, die Reihenfolge war falsch. Nun sieht es so aus:
    params: "window=0 LKlick1=1000 x1=150 y1=30 LKlick2=1000 x2=150 y2=190 LKlick3=1000 x3=440 y3=25 d=500 SendKey=\fPOI Observer";


    Die erste Merkwürdigkeit:
    Der Button, der obiges auslöst, befindest sich im Menü (2 Reihen, 4 Spalten) links unten. Drücke ich ihn, wird zunächst sichtbar der Button rechts daneben(!), also der zweite von links, untere Reihe, gedrückt - das kann ich mir überhaupt nicht erklären.


    Dann kommt der POIObserver nach vorne und der Klick1 wird korrekt ausgeführt.


    Das war's dann auch schon, von Klick2 und Klick3 ist nichts mehr zu sehen, das System wird unerträglich langsam und muss resettet werden.


    Ausserdem habe ich keinen Schimmer, wie ich zwischen Klick2 und Klick3 die Textausgabe von ".txt" erreichen kann.


    Die Lage ist nun zwar nicht mehr hoffnungslos, aber dennoch kompliziert...


    Gruß!


    Edit: Zur Veranschaulichung mal die beiden Fenster, die bedient werden müssen. LKlick1 auf "Write Log" funktioniert noch, LKlick2, der in das Dateinamensfeld gehen soll, reagiert nicht mehr.

  • Hallo kleriba,
    also dann will ich mals ins "Blaue hinein" was machen.


    Erst nochmal zum Verständnis:
    Die Reihenfolge der einzelnem Befehle in der params-Zeile haben keinen Einfluß auf die Reihenfolge der Abarbeitung. Diese ist im Programm festgelegt und in der Doku angegeben. Die Steuercodes innerhalb des SendKey-befehles werden aber schon in genau der angegebenen Reihenfolge abgearbeitet.


    Also:
    window=0 SendKey=\fPOI Observer\ findet nur das Fenster "POI Observer"
    Zu 1) window=0 SendKey=\fPOI Observer\p\ bringt es in den Vordergrund
    Zu 2) window=0 SendKey=\fPOI Observer\p\c1000,150,10 macht den LKlick
    Zu 3) Welches Fenster ist nun im Vordergrund? Immer noch POI Observer? Wenn ja dann window=0 SendKey=\fPOI Observer\p\c1000,150,10\c1000,150,175
    Zu 4) Ist der Cursor an der richtigen Stelle? Wenn ja, dann window=0 SendKey=\fPOI Observer\p\c1000,150,10\c1000,150,175\0x6E\0x54\0x58\0x54\ (weiß gerade nicht, ob 0x6E Punkt oder Komma ist)
    Zu 5) window=0 SendKey=\fPOI Observer\p\c1000,150,10\c1000,150,175\0x6E\0x54\0x58\0x54\c1000,430,25
    Zu 6) window=0 SendKey=\fPOI Observer\p\c1000,150,10\c1000,150,175\0x6E\0x54\0x58\0x54\c1000,430,25\fGopal Navigator\p\
    Mit viel Glück könnte es das gewesen sein.


    Teste es am besten schrittweise, dann sieht man, wo es noch hackt.


    Gruß,
    Stefan


    P.S.: Habe Dein 2. Posting gerade erst gelesen:
    Es gilt folgende Reihenfolge der Abarbeitung:
    LKlick1= -> LKlick2= -> LKlick3= -> SendKey= -> LKlick4= -> LKlick5= -> LKlick6=
    Deshalb besset die LKlicks in SendKey mit \c... machen!


    Viel Spaß

  • Guten Morgen, Stefan!


    Vielen Dank für Deine Hilfe, wir sind (bzw. Du bist) auf dem richtigen Weg.


    Mir ist zwar noch immer nicht klar, warum man überhaupt mit LKlickx-Aufzählungen arbeiten sollte, wenn es doch mit Deiner Variante der Steuercodes so viel einfacher geht. In den Skins, die ich mir angesehen hatte, waren es meist ellenlange Aufzählungen von LKlick 1 usw.


    Zurück zum Fall:
    Die Klickerei funktioniert soweit, damit *könnte* ich nun zufrieden sein.
    Darauf erst mal drei : drink : drink : drink


    Was aber noch nicht funktioniert ist der Texteintrag von ".txt" - dh bei Schritt 4 blinkt der Cursor zwar an der richtigen Stelle (s. mein angehängtes Bild 2, also nach den bereits vorhandenen Zahlen), es wird aber nichts geschrieben, es geht nach der Wartezeit einfach weiter mit dem Klick auf 430,25.


    Vielleicht bekommen "wir" das auch noch hin?!


    Viele Grüße!

    Einmal editiert, zuletzt von kleriba ()

  • Zitat

    Original von kleriba
    Mir ist zwar noch immer nicht klar, warum man überhaupt mit LKlickx-Aufzählungen arbeiten sollte, wenn es doch mit Deiner Variante der Steuercodes so viel einfacher geht. In den Skins, die ich mir angesehen hatte, waren es meist ellenlange Aufzählungen von LKlick 1 usw.


    Das ist ganz einfach "historisch" bedingt: Die LKlickx= gibt es schon länger, dann wurde der SendKey= eingeführt. Schließlich hat sich herausgestellt, dass das mit der zeitlichen Abfolge Probleme gibt und deskalb habe ich die Klicls auch noch in SendKey eingebaut. Aber da gab es schon die entscheidenden Skinerweiterungen...


    Zitat

    Was aber noch nicht funktioniert ist der Texteintrag von ".txt"


    Das hatte ich auch noch nie so richtig getestet...


    Probier mal folgendes:
    window=0 SendKey=\fPOI Observer\p\c1000,150,10\c1000,150,175\f\0x6E\0x54\0x58\0x54\c1000,430,25\fGop
    al Navigator\p\

    Der Text wurde wahrscheinlich an das dahinterliegende (vorher gefundene) Fenster geschickt.


    Gruß,
    Stefan


    Edit: Eine dumme Frage: wird die Endung .txt nicht automatisch angehängt?

    Einmal editiert, zuletzt von StefanDausR ()

  • Zitat

    Original von orc999
    Verschoben nach sonstigen Addons


    Warum? Hier geht es *nicht* um den POIObserver, sondern um die Anwendung des Koordinatentools von Stefan. Das wurde IIRC bisher immer im 465er/470er Forum diskutiert.


    kleriba

  • Zitat

    Original von StefanDausR
    Das ist ganz einfach "historisch" bedingt: Die LKlickx= gibt es schon länger, dann wurde der SendKey= eingeführt. Schließlich hat sich herausgestellt, dass das mit der zeitlichen Abfolge Probleme gibt und deskalb habe ich die Klicls auch noch in SendKey eingebaut. Aber da gab es schon die entscheidenden Skinerweiterungen...


    Ah, verstehe.


    Zitat


    Probier mal folgendes:
    window=0 SendKey=\fPOI Observer\p\c1000,150,10\c1000,150,175\f\0x6E\0x54\0x58\0x54\c1000,430,25\fGop
    al Navigator\p\


    Jo, der Text kommt nun dort an, wo er auch hin soll, allerdings ohne Punkt. 0x6E scheint demnach kein Punkt zu sein, einfach gar nichts. "txt" schliesst sich gleich an den bestehenden Eintrag an.


    Wo kann ich eigentlich diese Codes nachlesen?


    Zitat


    Edit: Eine dumme Frage: wird die Endung .txt nicht automatisch angehängt?


    Leider nein. Deshalb muss man später bei der Auswahl immer erst "Show all Files" selektieren - was natürlich machbar ist, aber nervt.


    Auf jeden Fall schon mal ganz vielen Dank; das Tool hat ja unglaubliche Möglichkeiten - da wird regelrecht mein Spieltrieb geweckt :D


    kleriba

  • Zitat

    Original von kleriba
    Wo kann ich eigentlich diese Codes nachlesen?


    z.B. hier!
    Aber leider finde ich da auch den Punkt nicht.
    Wenn's gar nicht klappt, dann muss ich die Routine für "normalen" Text erweitern!


    Jetz habe ich noch was gefunden!
    teste 'mal 0xBE:
    VK_PERIOD 0xBE Taste .


    Gruß,
    Stefan