Win32.client (DispatchWithEvents)

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.
MBR
User
Beiträge: 29
Registriert: Freitag 29. September 2006, 17:03

Win32.client (DispatchWithEvents)

Beitragvon MBR » Montag 30. Oktober 2006, 20:50

Schönen guten Abend,

habe ein Problem mit einem OPC - Client, bzw. dem Versuch einen OPC Client zu erstellen...

Bin momentan ziemlich ratlos, da der Fehler in einer Zeile auftritt, wo ich es eher nicht erwartet hätte! Dazu muss ich sagen, dass exakt der gleiche Code des Scripts mit der Vorversion des OPC - Servers einwandfrei funktioniert hat.

Folgende Zeile:

Code: Alles auswählen

OPC = win32com.client.DispatchWithEvents('OPC.Automation.1',ServerEvents)
OPC.Connect('SISCO.AXS4MMS.5')


Bis zum OPC.Connect kommt er schon garnicht mehr, stattdessen erhalte ich folgende Fehlermeldung:

OPC = win32com.client.DispatchWithEvents('OPC.Automation.1',ServerEvents)
File "C:\Python25\Lib\site-packages\win32com\client\__init__.py", line 243, in DispatchWithEvents
disp = Dispatch(clsid)
File "C:\Python25\Lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File "C:\Python25\Lib\site-packages\win32com\client\dynamic.py", line 98, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "C:\Python25\Lib\site-packages\win32com\client\dynamic.py", line 78, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
com_error: (-2147023898, 'Unzul\xe4ssiger Zugriff auf einen Speicherbereich.', None, None)

Bin mir momentan nicht mal darüber im Klaren, wo ich den Fehler suchen muss (Application, Registry, Win32 etc.)...

Vielen Dank für eure Hilfe!

Gruß,
Markus
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 30. Oktober 2006, 21:36

Zwei Fragen: was ist ServerEvents und kann das nicht dazwischenfunken? Reicht ein normales Dispatch() nicht?

Wo wir grad dabei sind, noch mehr Fragen: Hast du mit genpy static Dispatching für die aktuelle Version gemacht? Vielleicht spukt da noch das genpy-Interface von einer vorheringen Version rum?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
MBR
User
Beiträge: 29
Registriert: Freitag 29. September 2006, 17:03

Beitragvon MBR » Montag 30. Oktober 2006, 22:56

Hallo Leonidas,

Meines Wissens reicht für den OPC - Client das normale Dispatch nicht
aus. Über dir Events kann ich die "Reaktion" der angeschlossenen
Hardware (Steuerungsgeräte) empfangen. Im Falle des Servers wäre das
noch nichtmal so wichtig, für die OPC - Groups jedoch enorm.

Hier der Code inkl. der Eventklassen:

Code: Alles auswählen

class ServerEvents:
    def __init__(self):
        print 'Server started'
       
    def OnServerShutDown(self, Reason):
        print 'Server Shutdown at',time.ctime()

################################################# --> Group Events
class GroupEvents:
    def __init__(this):
        print 'Group gestartet...'
    def OnDataChange(self,TransactionID,NumItems,ClientHandles,ItemValues,Qualities,TimeStamps):
        print 'Data Change at', time.ctime(), ' ', ItemValues

################################################ --> Main
OPC = win32com.client.DispatchWithEvents('OPC.Automation.1',ServerEvents)
OPC.Connect('SISCO.AXS4MMS.5')


Normales Dispatch habe ich gerade mal ausprobiert, Ergebnis: "Diese
Schnittstelle wird nicht unterstützt", das angesprochene Programm öffnet
sich allerdings mal kurz, danach die Fehlermeldung.

Das genpy-Interface der Vorversion kann nicht rumspucken, da die
Entwicklung auf verschiedenen Rechner stattgefunden hat, insofern war
dies mein erster Versuch auf dem lokalen PC zu "dispatchen".

Kann mir einfach nicht erklären, warum derselbe Code dort lauffähig ist
und hier nicht. Irgendwie macht es mir den Eindruck als sei mein System
nicht "OPC - fähig", wobei alle benötigten DLL´s an ihrem Platz sind?!

Aber vieleicht hast du ja noch den ein oder anderen Tip parat...

Gruß,
Markus
MBR
User
Beiträge: 29
Registriert: Freitag 29. September 2006, 17:03

Beitragvon MBR » Mittwoch 1. November 2006, 10:27

Muss mich korrigieren, Win XP SP2 war auch nicht die Ursache.

Habe gestern das Problem an die Python win32 Mailing list geschickt.

Niemand hier, der eventuell mal ein ähnliches Problem gehabt hat???

Bin für jeden noch so kleinsten Hinweis dankbar!!!!

THX,
Markus

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]