win32com Anbindung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

Dienstag 12. Mai 2009, 16:00

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
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Dienstag 12. Mai 2009, 19:07

makepy hast du asugeführt?
http://www.kinderpornos.info
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

Dienstag 12. Mai 2009, 20:15

ähm?? nein???

Kann mich jemand Aufklären? Bin noch ganz neu in der Thematik.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Dienstag 12. Mai 2009, 22:47

http://www.kinderpornos.info
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

Mittwoch 13. Mai 2009, 14:08

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.
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

Donnerstag 14. Mai 2009, 16:51

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?!?
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Freitag 15. Mai 2009, 09:08

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.
http://www.kinderpornos.info
Antworten