0

我需要用它QAxObject来读取一些PLC数据。我可以成功连接PLC,但问题是我无法从中读取数据。原因如下。

class Test(QAxWidget):
    def __init__(self):
        super().__init__()
        self.setControl("ActUtlType.ActUtlType.1")
        self.dynamicCall("SetActLogicalStationNumber(int)", 1)

        ret = self.dynamicCall("Open()")
        value = 12
        ret = self.dynamicCall("ReadDeviceRandom2(QString, int, int&)", "D300", 1, value)
        print(ret, value)

在此处输入图像描述
info:ReadDeviceRandom2方法,szDeviceList为PLC地址,ISize为读取数据大小,IpsData为存储读取数据

问题是方法ReadDeviceRandom2需要传递一个int地址给它,但是python没有int地址。所以示例代码不起作用。在这种情况下,我如何将指针传递给它并读取它。

输出:
在此处输入图像描述


然后我使用其他方法

import win32com.client

plc = win32com.client.Dispatch("ActUtlType.ActUtlType.1")
plc.ActLogicalStationNumber = 1
plc.open()

value = 0
ret = plc.ReadDeviceRandom2("D300", 1, value)

print(ret, value)

输出,它工作正常。 在此处输入图像描述

4

0 回答 0