尝试在单独的线程中读取 OPC 标签时遇到问题。目前使用 windows 并使用 DCOM 模式连接到 Matrikon OPC Simuator。下面的代码工作正常
opc = OpenOPC.client()
opc.connect('Matrikon.OPC.Simulation','localhost')
print(opc.read(['Random.Int1','Random.Int2','Random.Int4']))
但是,当我尝试使用 threading.Timer 在循环中读取标签时
def start():
def readTags():
# Start new threaded timer
start()
# Read OPC tags.
print(opc.read(['Random.Int1','Random.Int2','Random.Int4']))
# Create new threaded timer with the function to call after 1 second
r = threading.Timer(1, readTags)
r.start()
opc = OpenOPC.client()
opc.connect('Matrikon.OPC.Simulation','localhost')
start()
我收到以下错误
OPCError: AddGroup: CoInitialize 尚未被调用。
我感觉这与在不同线程之间共享 COM 对象有关(将 win32com 与多线程一起使用)但无法使其正常工作。任何帮助将不胜感激,谢谢