1

尝试在单独的线程中读取 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 与多线程一起使用)但无法使其正常工作。任何帮助将不胜感激,谢谢

4

0 回答 0