Python und OPC

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
giymo
User
Beiträge: 1
Registriert: Mittwoch 17. Mai 2006, 12:45

Ich möchte ein OPC client im python schreiben. Bis jetzt habe ich das gemacht:

#---------------------------------------------------------

Code: Alles auswählen

import win32com.client
import pythoncom

opc=win32com.client.Dispatch("Matrikon.OPC.Automation.1")
opc.Connect('Matrikon.OPC.Simulation.1')

groups=opc.OPCGroups
groups.DefaultGroupIsActive=True
groups.DefaultGroupDeadband=0

group=groups.Add("grupa")
group.UpdateRate=500
group.IsSubscribed=True

items=group.OPCItems
items.DefaultIsActive = True
item=items.AddItem("cifra",2)

Source=1
NumItems=1
ServerHandles=group.ServerHandle
Values=()
Errors=()

print group.SyncRead(Source,NumItems,ServerHandles,Values,Errors)

#SyncRead(Source As Integer, NumItems As Long, ServerHandles() As Long, ByRef Values() As Variant,  ByRef Errors() As Long, Optional ByRef Qualities As Variant, Optional ByRef 

opc.Disconnect()
#-----------------------------------------------------------------------------



Wegen print group.SyncRead(Source,NumItems,ServerHandles,Values,Errors) bekomme ich diese fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "D:\programi\Python24\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 307, in RunScript
    debugger.run(codeObject, __main__.__dict__, start_stepping=0)
  File "D:\programi\Python24\Lib\site-packages\pythonwin\pywin\debugger\__init__.py", line 60, in run
    _GetCurrentDebugger().run(cmd, globals,locals, start_stepping)
  File "D:\programi\Python24\Lib\site-packages\pythonwin\pywin\debugger\debugger.py", line 595, in run
    exec cmd in globals, locals
  File "D:\matej fajli\programiranje\python\dll\makepy4.py", line 25, in ?
    print group.SyncRead(Source,NumItems,ServerHandles,Values,Errors)
  File "D:\Programi\Python24\lib\site-packages\win32com\gen_py\F8582D24-88FB-11D0-B850-00C0F0104305x0x1x0.py", line 297, in SyncRead
    return self._ApplyTypes_(1610743828, 1, (24, 0), ((2, 1), (3, 1), (24579, 1), (24588, 2), (24579, 2), (16396, 18), (16396, 18)), 'SyncRead', None,Source, NumItems, ServerHandles, Values, Errors, Qualities, TimeStamps)
  File "D:\programi\Python24\Lib\site-packages\win32com\client\__init__.py", line 446, in _ApplyTypes_
    return self._get_good_object_(
TypeError: Objects for SAFEARRAYS must be sequences (of sequences), or a buffer object.


Was habe ich falsch gemacht?

Edit (Leonidas): Code in Tags gesetzt.
Antworten