【发布时间】:2015-12-15 16:05:54
【问题描述】:
背景
我有一些 Python 分析软件,我必须将一个 4096 字节的列表(看起来像这样[80, 56, 49, 50, 229, 55, 55, 0, 77, ......])传递给 dll,以便 dll 将其写入设备。
- 要写入的字节存储在变量名数据中
-
必须从python调用的c函数(在dll中)是
int _DLL_BUILD_ IO_DataWrite(HANDLE hDevice, unsigned char* p_pBuff, unsigned char p_nByteCntInBuff); 我无权访问 dll 代码
方法尝试
我试图声明一个数据类型
data_tx = (ctypes.c_uint8 * len(data))(*data)
并调用函数
ret = self.sisdll.IO_DataWrite(self.handle, ctypes.byref(data_tx), ctypes.c_uint8(pending_bytes))
问题
似乎没有错误,但它不起作用。 API 调用适用于 C 和 C++。
我这样做对吗?任何人都可以请为我指出错误吗?
【问题讨论】:
-
您是否尝试过定义参数类型:
IO_DataWrite.argtypes = [c_void_p, POINTER(c_uint8), c_uint8]? -
通常,我会使用
data_tx = (ctypes.c_uint8 * len(data))(),然后将数据复制到数组中并使用ctypes.byref调用库。你可以试试这个而不是从数据构造你的数组 -
@JensMunk 把它变成一个答案,这是正确的答案
-
@zwol 我今天晚些时候会这样做。离开一段时间了
-
@JensMunk 请将其转换为答案。正确!!!!!!