By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
439,985 Members | 1,574 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 439,985 IT Pros & Developers. It's quick & easy.

making a opc client in Python and use opc server Events

P: n/a
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:

Jun 4 '07 #1
Share this Question
Share on Google+
1 Reply


P: n/a
On 4 juin, 11:32, getelectro...@gmail.com 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..

Jun 28 '07 #2

This discussion thread is closed

Replies have been disabled for this discussion.