On 4 juin, 11:32, [EMAIL PROTECTED] wrote: > Hi all > I have a sample code to implement opc client in Python. i use a > file .py making by makepy with pythonwin for Com Interface. > i can get all server in machine, connect to server opc, disconnect, > add group, add item, read, write item in server opc. > > import win32com.client # librairie pour utiliser l'interface COM/DCOM > from win32com.client import gencache > gencache.EnsureModule('{DFB83232-A952-11D2-A46B-00C04F796375}', 0, 1, > 0) > > for svr in opcserver.GetOPCServers(): > print svr > > #connect to server OPC Demo Simulation from Matrikon > opcserver.Connect('Matrikon.OPC.Simulation.1') > > # Instance object Groups > groups=opcserver.OPCGroups > #add group > group=groups.Add('Group1') > > #instance onject Items > items=group.OPCItems > # add item in server opc > tem=items.AddItem('File1.item1',1) > > #read item value > item.Read(win32com.client.constants.OPCDevice) > > # write a new value > item.Write(100) > > #read item value > item.Read(win32com.client.constants.OPCDevice) > #if no pb you have 100 :) > > #Disconnect > #opcserver.Disconnect() > > BUT, and BUT, i want to use a event from opc server for uodating item > value with this below class. And i don't konw how make it!!!!!!!! > help me plz > > opcserver=win32com.client.Dispatch('OPC.Automation.1') > and now i want to use events from opc server. in a class: > class DIOPCGroupEvent: > class DIOPCGroupsEvent: > class DIOPCServerEvent:
Try this: # Event Handlers class ServerEvent: def __init__(self): print 'Init ServerEvent' def OnServerShutDown(self, Reason): print 'OnServerShutDown', Reason class GroupEvent: def __init__(self): print 'Init GroupEvent' def OnAsyncCancelComplete(self, CancelID): print 'OnAsyncCancelComplete', CancelID def OnDataChange(self, TransactionID, NumItems, ClientHandles, ItemValues, Qualities, TimeStamps): print 'OnDataChange', zip(ClientHandles, ItemValues, Qualities) def OnAsyncReadComplete(self, TransactionID, NumItems, ClientHandles, ItemValues, Qualities, TimeStamps, Errors): print 'OnAsyncReadComplete', zip(ClientHandles, ItemValues, Qualities) def OnAsyncWriteComplete(self, TransactionID, NumItems, ClientHandles, Errors): print 'OnAsyncWriteComplete', zip(ClientHandles, Errors) class GroupsEvent: def __init__(self): print 'Init GroupsEvent' def OnGlobalDataChange(self, TransactionID, GroupHandle, NumItems, ClientHandles, ItemValues, Qualities, TimeStamps): print 'OnGlobalDataChange', zip(ClientHandles, ItemValues, Qualities) opc = DispatchWithEvents('Matrikon.OPC.Automation.1', ServerEvent) groups = DispatchWithEvents(opc.OPCGroups, GroupsEvent) groups.DefaultGroupIsActive = True groups.DefaultGroupUpdateRate = 2000 group1 = DispatchWithEvents(groups.Add('G1'), GroupEvent) group2 = DispatchWithEvents(groups.Add('G2'), GroupEvent) #etc ... It works for the GroupsEvents but I don't get the GroupEvent for each group, I may still do someting wrong.. -- http://mail.python.org/mailman/listinfo/python-list