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