wjh_bh 发表于 2014-06-26 16:18

怎样向win32com对象的函数传递out形参

遇到一个COM类型对象,其中一个函数的形参是out形参:

intActEasyIF.ReadDeviceBlock(string szDevice,   int Isize,out int IpIdata)   //函数原型,返回0表示读取成功

在C#下调用此方法,向 IpIdata形参传入一个int数组首元素值,在函数内部会获取设备 Isize 个实时数据,并将这些数值依次写入该数组 自0开始的Isize个元素中。

aa.ReadDeviceBlock(“D0”,10,   out da))//C#调用,测试读取成功

python下通过win32com.client导入该COM控件:
>>> from win32com.client import Dispatch
>>> import pythoncom
>>> parser = Dispatch("ActMulti.ActEasyIF")
>>> parser.ActLogicalStationNumber = 1
>>> parser.Open()
0#打开设备成功
>>> da = *10
>>> parser.ReadDeviceBlock("D0", 10, da)
(0, 256)
>>> da   #数据没有写入列表


上面的python脚本,将列表首元素传入函数,调用后,返回了一个元组(0, 256),0应该表示读取成功,256即是设备实时值的第一个元素值(仅一个,而非第二个参数指定的10个),但列表元素值并没有改变,问题肯定出在传递入函数的第三个实参上,但不知道python怎样对应COM函数的的out形参数呢?
页: [1]
查看完整版本: 怎样向win32com对象的函数传递out形参