5
背景如何Python列表传递给C函数(DLL)使用ctypes的
我有一些分析软件在Python我必须通过的4096个字节的列表(它看起来像这样[80, 56, 49, 50, 229, 55, 55, 0, 77, ......]
)到dll,以便将dll写入设备。
- 要写入的字节被存储在变量名数据
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