我正在尝试与 OPC DA 服务器进行通信,并且需要写入数组格式的标签。我们可以连接模拟服务器,读取标签(int、real、array)和写入标签(int、real、str)。当我们需要写入数组标签时,问题就出现了。OpenOPC 库的开发人员 (Barry Barnreiter) 建议使用 VARIANT 变量,因为 OPC“希望在写入复杂对象(例如数组)时看到 Windows VARIANT 结构”。
这是代码:
from win32com.client import VARIANT
import pythoncom
import OpenOPC
opc_local = OpenOPC.open_client()
opc_local.connect('Matrikon.OPC.Simulation','localhost')
values = VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, [1.0, 2.0, 3.0, 4.0, 5.0, 6.0])
w = opc_local.write(('Bucket Brigade.ArrayOfReal8', values))
print(w)
Run Code Online (Sandbox Code Playgroud)
这是执行 opc_local.write 行时出现的错误:
AttributeError: 'module' object has no attribute 'VARIANT'
Run Code Online (Sandbox Code Playgroud)
这是整个回溯:
runfile('C:/Users/nadmin/Downloads/sanstitre0.py', wdir='C:/Users/nadmin/Downloads')
Traceback (most recent call last):
File "<ipython-input-5-6799f41ab928>", line 1, in <module>
runfile('C:/Users/nadmin/Downloads/sanstitre0.py', wdir='C:/Users/nadmin/Downloads')
File "C:\Users\nadmin\AppData\Local\Continuum\anaconda2\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line …Run Code Online (Sandbox Code Playgroud)