Seite 1 von 1

win32com Anbindung

Verfasst: Dienstag 12. Mai 2009, 16:00
von tjuXx
Hallo,
ich habe ein Problem mit der Anbindung einer Applikation in meinen Python Code.

Wenn ich folgendes Skript ausführe, ist die benötigte Applikation unter "Registered Type Libraries" mit aufgeführt.

Code: Alles auswählen

import win32com.client.combrowse
win32com.client.combrowse.main()
Das heisst doch das sie verfügbar ist ???

Ich versuchte dann auf das COM-Objekt zuzugreifen:

Code: Alles auswählen

import win32com.client

tracker = win32com.client.Dispatch("HHITrackerHead.Application")
Wenn ich "HHITrackerHead.Application" z.B. durch "Excel.Application" ersätze funktioniert es.

Sonst erhalte ich folgenden Fehler:
com_error: (-2147221005, 'Ung\xfcltige Klassenzeichenfolge', None, None)
Wie finde kann ich den korrekten Namen für meine Applikation finden??


Gruß tjuXx

Verfasst: Dienstag 12. Mai 2009, 19:07
von Dill
makepy hast du asugeführt?

Verfasst: Dienstag 12. Mai 2009, 20:15
von tjuXx
ähm?? nein???

Kann mich jemand Aufklären? Bin noch ganz neu in der Thematik.

Verfasst: Dienstag 12. Mai 2009, 22:47
von Dill

Verfasst: Mittwoch 13. Mai 2009, 14:08
von tjuXx
Das hat mir noch nicht wirklich weitergeholfen.

Ich habe jetzt mit PythonWin --> Tools --> COM Makepy Utility meine Applikation ausgewählt. Ich bekomme dann folgende Datei generiert:

19A49566-B390-4FBC-908D-2F14C32DA606x0x1x0.py

Wie muss ich jetzt weiter vorgehen???

Die Applikation ist ein Tracker, der ständig X-,Y- und Z-Werte liefert, welche ich in meinem Python Skript verarbeiten will.

Verfasst: Donnerstag 14. Mai 2009, 16:51
von tjuXx
Hier ersmal die Datei, die das COM Makepy Utility ausgibt:

19A49566-B390-4FBC-908D-2F14C32DA606x0x1x0.py
http://paste.pocoo.org/show/kFk3e4OXR3lUVT7Q36Ge/


Habe es mit jetzt mit folgendem Code probiert, und ich erhalte sogar eine Ausgabe. Allerding nur:

(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 99)

Eigentlich müssten dort unterschiedliche Werte zwischen 200 und -200 stehen.

Code: Alles auswählen

from win32com.client import constants, DispatchWithEvents
from pythoncom import com_error

class EventHandler:
    def __init__(self):
        self.ors=-2
    def __rsc(self):
        print " ReadyState:",self.ors,'->',self.ReadyState
        self.ors=self.ReadyState
    def __crs(self):
        try:
            if self.ReadyState!=self.ors:
                self.__rsc()
            else:
                print
        except AttributeError:
            self.ors=-33
            self.__rsc()
            
    def OnMeasurement2Eyes(self, xpos_l, ypos_l, zpos_l, xpos_r, ypos_r, zpos_r, acc):
        self.__crs()

hhi = DispatchWithEvents("HHITrackerHead.HHITrackerHead.1", EventHandler)
print hhi.GetMeasurement2Eyes()
Ich habe den Code hier gefunden:

http://mail.python.org/pipermail/python ... 47702.html

aber ich habe die Methoden __init__, __rsc und __crs nicht wirklich verstanden.


Des Weiteren ändert der Tracker die Position mit ca. 120Hz. Irgendwie müsste ich also auch an die Events kommen?!?

Verfasst: Freitag 15. Mai 2009, 09:08
von Dill
wie wärs denn wenn du dir erstmal ein win32com tutorial komplett durchließt?

so viel gibt es da ja nicht zu beachten. wenn du dich an die regeln hältst wird das modul das du einsetzt so funktionieren wie in seiner doku angegeben. so wars jedenfalls bei allen com-komponenten die ich bisher eingesetzt habe.