在调用c++库时,如何在Python中使用cypes传递一个字节作为引用?

2024-09-30 10:32:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试如何将一些c++函数导入python。我让它们工作,直到其中一个函数需要它的一个属性通过引用传递,我不知道如何让它工作。 我一直在遵循这里给出的建议:https://stackoverflow.com/a/252473/7447849 在我试过这个之前,它一直工作得很好:

我有以下c++函数:

bool __stdcall I2CRead(int Instance,  BYTE SlaveAddress, BYTE registerAddress, BYTE* ReadBuff, BYTE Length)

这就是我尝试过的代码:

^{pr2}$

这段代码可以工作,但是readBuff保持给定的默认值不变,而不是应该更改。在

我试图使用byref(),但仍然不起作用(它给了我一个错误的类型错误)。在

有没有关于我做错事的见解?我对Python不太在行,所以可能有个概念我误解了


Tags: instance函数代码httpscom属性错误byte
1条回答
网友
1楼 · 发布于 2024-09-30 10:32:56

未经测试。确保参数使用正确的类型。在

from ctypes import *
dll = WinDLL('dllname')
dll.I2CRead.argtypes = c_int,c_ubyte,c_ubyte,POINTER(c_ubyte),c_ubyte
dll.I2CRead.restype = c_bool

output = (c_ubyte * 256)()  # Create instance of a c_ubyte array to store the output.
result = dll.I2CRead(1,2,3,output,len(output))

相关问题 更多 >

    热门问题