我正在尝试使用ctypes将字符串传递给C ++函数,并获得一个作为回报。函数声明是:
BOOL PERFORMAXCOM_API _stdcall SendReceive(IN HANDLE pHandle,
IN LPVOID wBuffer,
IN DWORD dwNumBytesToWrite,
IN DWORD dwNumBytesToRead,
OUT LPVOID rBuffer)
我对HANDLE
和DWORD
变量感到满意,并且通过以下设置在类似的函数中实现了OUT LPVOID
:
szReplyBuffer = create_string_buffer(64)
ReplyBuffer = c_char_p(addressof(szReplyBuffer))
当与类似的OUT LPVOID
一起使用时会返回一个字符串。
我从输入的字符串IN LPVOID
创建cmdStr
的当前方法(例如“E0 = 1”)是:
szSendStr = c_char * 64
SendStr = szSendStr()
for i in range(len(cmdStr)):
SendStr[i] = cmdStr[i]
然后我使用以下声明将其传递给函数:
Status = SendReceive(byref(hUSBDevice), c_void_p(addressof(SendStr)), 64, 64, ReplyBuffer)
我已尝试过将SendStr
传递给函数的许多不同排列,但绝不会在ReplyBuffer
中通过空字符串获取任何内容。有没有办法传递我错过的字符串?
由于
劳伦斯