Notice: This forum has been recovered from an old backup, so some content, links, and dates may be outdated. The forum is currently read-only while we restore sign-in and registration functionality. Details

If you find this forum valuable and would like to help keep it online, donations to help cover hosting and domain costs are greatly appreciated, but never expected. You can support the forum through Buy Me a Coffee or Ko-fi. Thank you for helping preserve the EventGhost community.

Problem beim ausf├╝hren eines cmd- Befehls per Makros

Allgemeines zum Thema EventGhost
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Code: Select all

D:
CD D:\Programme\C.I.P
S2xyY.exe /ini:S2xyYSingleRead.ini
damdy-cash
Experienced User
Posts: 102
Joined: Tue Mar 28, 2006 6:48 am

Post by damdy-cash »

Bitmonster wrote:

Code: Select all

D:
CD D:\Programme\C.I.P
S2xyY.exe /ini:S2xyYSingleRead.ini
So KLAPPT es! Puh, das war eine schwere Geburt!!

Danke!

Gruß Volker

PS: Ich wollte ca. Mitte April das Excel- Sheet rausgeben und auch gleich das Auslesen f├╝r den SpyderTV reinpacken. Meinst Du das klappt?

PPS: Du hattest ja das Problem, dass Du die Testbilder auf dem gleichen Rechner anzeigen lassen willst. Zumindest läuft die Spyder2Pro ohne Probleme im Hintergrund, wenn ich die Excel per extra Programm ständig im Vordergrund halte. Sollte doch bei Testbildern gleich klappen.
Gruß Damdy
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Also liegt es anscheinend doch an dem Arbeitsverzeichnis. Dann werde ich das mal in der nächsten Version ändern, damit es auch ohne Batch geht.

Das Problem bei SpyderTV war nicht, dass ich etwas anderes nicht davor setzen kann. Das Problem ist vielmehr, dass ich den Lesevorgang nicht ausl├Âsen kann, wenn SpyderTV nicht im Vordergrund ist. Wenn ich aber erst STV vorne habe, dann den Vorgang ausl├Âse und dann erst das Testbild vollst├ñndig anzeigen lassen kann, k├Ânnte es ein Problem geben, dass STV zumindest f├╝r kurze Zeit seinen eigenen Dialog misst.

Aber vielleicht finde ich da noch eine L├Âsung f├╝r.
damdy-cash
Experienced User
Posts: 102
Joined: Tue Mar 28, 2006 6:48 am

Post by damdy-cash »

Jetzt habe ich das noch so abgerundet:
Ich schicke per EG + Lan den DVD- Next- Befehl an den HTPC und die Graustufe /Prim-Sec werden mit dem Excel- Makro automatisch durchgemessen :D

Sehr komfortabel, klasse dein Programm!!

Was sagst Du dazu?
damdy-cash wrote: PS: Ich wollte ca. Mitte April das Excel- Sheet rausgeben und auch gleich das Auslesen f├╝r den SpyderTV reinpacken. Meinst Du das klappt?
Gruß Damdy
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Du kannst mal die ersten Versuche hiermit machen:

Code: Select all

<?xml version="1.0" encoding="UTF-8" ?>
<EventGhost Version="554">
    <Folder Name="SpyderTV">
        <Macro Name="Start one reading">
            <Action>
                EventGhost.PythonCommand(u'SpyderTV_ReadingTime = 12')
            </Action>
            <Action Name="Find Dialog">
                Window.FindWindow(u'SpyderTV.exe', u'Support-Diagnose-Tool', u'ThunderRT6FormDC', None, None, 1, False, 0.0)
            </Action>
            <Action>
                EventGhost.NewJumpIf(XmlIdLink(823), 1, False)
            </Action>
            <Action>
                EventGhost.NewJumpIf(XmlIdLink(842), 2, True)
            </Action>
            <Action>
                EventGhost.NewJumpIf(XmlIdLink(852), 2, False)
            </Action>
        </Macro>
        <Macro Name="Setup SpyderTV" id="823">
            <Action Name="Find Mainwindow">
                Window.FindWindow(u'SpyderTV.exe', u'SpyderTV', u'ThunderRT6FormDC', None, None, 1, False, 1.0)
            </Action>
            <Action>
                EventGhost.NewJumpIf(XmlIdLink(839), 0, True)
            </Action>
            <Action>
                System.Execute(u'C:\\Programme\\SpyderTV\\SpyderTV.exe', u'/support', 0, False, 2)
            </Action>
            <Action Name="Find Splashscreen">
                Window.FindWindow(u'SpyderTV.exe', u'', u'ThunderRT6FormDC', None, None, 1, False, 20.0)
            </Action>
            <Action>
                Window.MoveTo(-10000, 0)
            </Action>
            <Action Name="Find Mainwindow">
                Window.FindWindow(u'SpyderTV.exe', u'SpyderTV', u'ThunderRT6FormDC', None, None, 1, False, 20.0)
            </Action>
            <Action>
                Window.Resize(1, 1)
            </Action>
            <Action>
                Window.MoveTo(-10000, 0)
            </Action>
            <Action Name="Find Textbox">
                Window.FindWindow(u'SpyderTV.exe', u'Support-Diagnose-Tool', u'ThunderRT6FormDC', None, u'ThunderRT6TextBox', 1, False, 0.0)
            </Action>
            <Action>
                Window.SendKeys(u'{Right}{Right}{Right}{Back}{Back}{Back}')
            </Action>
            <Action>
                Window.SendKeys(u'{SpyderTV_ReadingTime}')
            </Action>
            <Action Name="Find Dialog">
                Window.FindWindow(u'SpyderTV.exe', u'Support-Diagnose-Tool', u'ThunderRT6FormDC', None, None, 1, False, 5.0)
            </Action>
            <Action>
                EventGhost.NewJumpIf(XmlIdLink(842), 2, True)
            </Action>
            <Action>
                EventGhost.Wait(2.0)
            </Action>
            <Action>
                EventGhost.NewJumpIf(XmlIdLink(852), 2, False)
            </Action>
        </Macro>
        <Macro Name="Close SpyderTV" id="839">
            <Action Name="Find Mainwindow">
                Window.FindWindow(u'SpyderTV.exe', u'SpyderTV', u'ThunderRT6FormDC', None, None, 1, False, 0.0)
            </Action>
            <Action>
                Window.Close()
            </Action>
        </Macro>
        <Macro Name="Press Button" id="842">
            <Action Name="Find Dialog">
                Window.FindWindow(u'SpyderTV.exe', u'Support-Diagnose-Tool', u'ThunderRT6FormDC', None, None, 1, False, 0.0)
            </Action>
            <Action>
                Window.BringToFront()
            </Action>
            <Action>
                Window.MoveTo(0, 0)
            </Action>
            <Action>
                EventGhost.Wait(0.10000000000000001)
            </Action>
            <Action Name="Find Button">
                Window.FindWindow(u'SpyderTV.exe', u'Support-Diagnose-Tool', u'ThunderRT6FormDC', u'', u'ThunderRT6UserControlDC', 1, False, 0.0)
            </Action>
            <Action Name="Press Button">
                EventGhost.PythonScript(u'import win32con\nimport win32api\nimport win32gui\n\nhwnd = eg.lastFoundWindows[0]\nleft, top, right, bottom = win32gui.GetClientRect(hwnd)\nleft, top = win32gui.ClientToScreen(hwnd, (left, top))\n\ns_width = 1024\ns_height = 768\nx = left + right / 2\ny = top + bottom / 2\n\nx = int(round(x * (65535 / s_width)))\ny = int(round(y * (65535 / s_height)))\n\nwin32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_MOVE, x, y, 0, 0)\nwin32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)\nwin32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)')
            </Action>
            <Action Name="Find Dialog">
                Window.FindWindow(u'SpyderTV.exe', u'Support-Diagnose-Tool', u'ThunderRT6FormDC', None, None, 1, False, 0.0)
            </Action>
            <Action>
                Window.MoveTo(-10000, 0)
            </Action>
            <Action>
                EventGhost.PythonCommand(u'eg.Wait(SpyderTV_ReadingTime + 1)')
            </Action>
        </Macro>
        <Macro Name="Analyze result" id="852">
            <Action Name="Find Dialog">
                Window.FindWindow(u'SpyderTV.exe', u'Support-Diagnose-Tool', u'ThunderRT6FormDC', None, None, 1, False, 5.0)
            </Action>
            <Action>
                Window.MoveTo(0, 0)
            </Action>
            <Action>
                EventGhost.Wait(0.10000000000000001)
            </Action>
            <Action Name="Analyze result">
                EventGhost.PythonScript(u'import wx \nimport win32gui\n\n\ndef OnToFile(hwnd):\n    result = []\n    context = wx.ScreenDC() \n    memory = wx.MemoryDC() \n    left, top, right, bottom = win32gui.GetClientRect(hwnd)\n    left, top = win32gui.ClientToScreen(hwnd, (left, top))\n    bitmap = wx.EmptyBitmap(right, bottom, -1) \n    memory.SelectObject(bitmap) \n    memory.Blit(0, 0, right, bottom, context, left, top) \n    \n\n    for x,y in ((113, 31), (113, 119), (113, 207), (265, 295)):\n        s = ""\n        \n        def is_set(x1, y1):\n            return memory.GetPixel(x+x1, y+y1) == (0,0,0)\n        \n        for i in range (0,5):\n            if is_set(7, 55):\n                s +=  ","\n                x += 22\n                continue\n            if is_set(3,46) and is_set(3,33):\n                s +=  "."\n                x += 22\n                continue\n                \n            if is_set(2,36):\n                if is_set(1,36):\n                    if is_set(0,27):\n                        num = 4\n                    else:\n                        num = 3\n                else:\n                    if is_set(1,35):\n                        num = 5\n                    elif is_set(1,12):\n                        num = 9\n                    else:\n                        num = 8\n            else:\n                if is_set(2,17):\n                    if is_set(2,16):\n                        num = 0\n                    else:\n                        num = 6\n                else:\n                    if is_set(1,44):\n                        num = 2\n                    elif is_set(2,1):\n                        num = 7\n                    else:\n                        num = 1\n                    \n            s += str(num)\n            x += 44\n        print s\n        result.append(s)\n    \n        \n    memory.SelectObject(wx.NullBitmap) \n    #bitmap.SaveFile("test.bmp", wx.BITMAP_TYPE_BMP) \n    \n    fd = open("c:/SpyderTV.csv", "at")\n    fd.write(";".join(result))\n    fd.write("\\n")\n    fd.close()\n    \n    eg.result = "\\r\\n".join(result)\n    \nOnToFile(eg.lastFoundWindows[0])')
            </Action>
            <Action>
                System.SetClipboard(u'{eg.result}')
            </Action>
        </Macro>
    </Folder>
</EventGhost>
Das Makro "Start one reading" ausführen und er sollte ein Reading machen und das Ergebnis anzeigen. Zudem sollte er das Ergebnis der Datei C:\SpyderTV.csv anhängen.

Voreingestellt f├╝r 12s Reading. Wenn du eine andere Zeit haben willst, dann musst du in dem ersten Makro den Python-Befehl:
SpyderTV_ReadingTime = 12
auf die entsprechende Zeit ändern.

Damit das ganze läuft, brauchst du mindestens die Build 526:
http://www.eventghost.org/downloads/Eve ... _Setup.exe
Last edited by Bitmonster on Thu Apr 13, 2006 7:09 pm, edited 2 times in total.
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Ich habe das obere Posting nochmal editiert mit einer neuen Version.

Das Problem war, dass SpyderTV beim ersten Reading mehr Zeit braucht als bei den darauf folgenden. Zudem ist die Lesezeit jetzt einfacher zu verändern und noch einige andere Detailverbesserungen. So sollte er z.B. STV auch sauber neustarten, wenn man den Tool-Dialog ausversehen geschlossen hat.
damdy-cash
Experienced User
Posts: 102
Joined: Tue Mar 28, 2006 6:48 am

Post by damdy-cash »

SUPER DANKE!!

Ich werde mich allerdings erst n. W. damit besch├ñftigen k├Ânnen, weil ich heute Nacht in Urlaub fliege.

Wenn ich wieder da bin werde ich es in Ruhe testen und einbauen.

Beste Grüße Volker
Gruß Damdy
damdy-cash
Experienced User
Posts: 102
Joined: Tue Mar 28, 2006 6:48 am

Post by damdy-cash »

so jetzt konnte ich mir das endlich mal ansehen.

Klappt prima!

2-3 Sachen die es runder machen w├╝rden:

1. Kann EG die Daten auch direkt in die Zwischenablage kopieren. Falls ja, welcher Parameter im Phyton- Script wäre das oder ist es ein tiefer liegender Eingriff?

2. Die Datenreihenfolge (aucH wenn L├Âsung 1. Zwischenablage klappt) w├ñre statt im Format:
xxx xxx xxx
besser in
xxx
xxx
xxx
zu gebrauchen um sie in meine Excel zu kopieren. Dann k├Ânnte ich mir ein Makro zur konvertierung sparen. Welcher Parameter... usw. wie oben.

3. Falls 1 nicht klappt, wie kann man daf├╝r sorgen, dass die Daten in der CVS Datei immer vor dem n├ñchsten Reading gel├Âscht werden? Im Moment schreibt das Script die Daten fortlaufen in die Datei.
Gruß Damdy
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Ich hab das Posting oben mal editiert um eine entsprechend erweiterte Funktion. Die Werte sollten jetzt zeilenweise in der Zwischenablage landen.
damdy-cash
Experienced User
Posts: 102
Joined: Tue Mar 28, 2006 6:48 am

Post by damdy-cash »

Bitmonster wrote:Ich hab das Posting oben mal editiert um eine entsprechend erweiterte Funktion. Die Werte sollten jetzt zeilenweise in der Zwischenablage landen.
so passt das bestens.
Eine Kleinigkeit: Ich habe es beim Testen hinbekommen andere Fenster als das STV Fenster mit dem Makro zu verschieben. Ist aber eventuell wirklich nur ein Thema beim testen und ich hatte versehntlich den Fokus auf dieses Fenster gelegt.

Jetzt brauche ich nur noch einen Tipp wie ich den 4 Wert Farbtemperatur auskommentieren kann oder generell weg bekomme. Die Farbtemperatur wird in der Excel von den xyY- Daten her berechnet.
Gruß Damdy
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Dann ändere mal die Zeile im PythonScript "Analyze result" von:

Code: Select all

eg.result = "\r\n".join(result)
nach

Code: Select all

eg.result = "\r\n".join(result[0:2])
damdy-cash
Experienced User
Posts: 102
Joined: Tue Mar 28, 2006 6:48 am

Post by damdy-cash »

Bitmonster wrote: jepp, mit

Code: Select all

eg.result = "\r\n".join(result[0:3])
klappt es.

Ich werde jetzt mal die VBA- Makros darauf umbauen und das Ganze mit der Tabelle durchtesten.

Eine Thema: Bei niedrigen Readzeiten (4 Sec) aktualisieren sich die Daten im STV nicht nach dem Reading. Auch wenn ich schon mit dieser Readingzeit in EG die STV Soft starte. Hast Du eine Idee woher das kommt, soweit ich mich erinnere ist die Default- Zeit 4 Sekunden. Bei der Messung zum PJ braucht man die langen Zeiten ja nicht.
Gruß Damdy
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Hmm, bei mir funktioniert es eigentlich auch mit 4 sek (wenn man STV nach dem Ändern beendet).

Kannst ja mal versuchen eine Pause von 0,1s zwischen dem "PressButton" Script und "Find Dialog" im "Press Button" Makro hinzuzuf├╝gen.
damdy-cash
Experienced User
Posts: 102
Joined: Tue Mar 28, 2006 6:48 am

Post by damdy-cash »

ich verzweifle gerade an Excel:
immer wenn der Y Wert 4 stellig mit 1 Zahl vor dem Komma ist, macht es mir einen tausender Wert daraus. Scheint ein Bug oder so etwas.

Bspl: 111,111 und 11,111 macht es richtig, aber 1,111 macht es zur 1.111

Hab schon alles an Ländereinstellungen usw. abgesucht aber nichts zu finden. Das bescheuerte ist noch, wenn ich es per strg+v paste ist es ok, sobald es per Makro kommt nicht.

Gibt es als Workaround die M├Âglichkeit die Y- Werte immer nur mit 1 Nachkommastelle in die Zwischenablage zu schaffen? Schadet ja in Sachen Genauigkeit bei dem Wert nichts.
Gruß Damdy
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Und was macht Excel aus 1,1110 ?

Wenn das geht, dann mach aus der Zeile:

Code: Select all

result.append(s)
dieses:

Code: Select all

result.append(s + "0")
Post Reply