在python中访问HIDAPI库

2024-09-26 22:50:01 发布

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

我正在尝试使用python与通用HID设备通信。在

我读过用C编写的HIDAPI库在简单和稳定的跨平台HID通信方面胜过libusb1.0。然而,从来没有人费心演示如何从python脚本中调用HIDAPI函数,这就是我遇到麻烦的地方。在

我了解足够的ctypes来调用非常简单的C函数,比如:

int add(int n1, int n2) {
    return n1 + n2;
    }

问题是HIDAPI函数更复杂,例如(在HIDAPI header file)中:

^{pr2}$

指向这个结构(在mac branch C file)中:

struct hid_device_info  HID_API_EXPORT *hid_enumerate(unsigned short vendor_id, unsigned short product_id)
{
...
}

其中,“…”是大量操作系统级代码,最终返回“指向struct\hid#device类型的链接列表的指针,其中包含有关hid设备的信息”

如何使用ctypes或任何其他工具,在python脚本中调用这样的函数?我希望这个stackoverflow页面可以作为所有其他想解决相同问题的人的指南,所以请提供足够的细节,谢谢。在


Tags: 函数脚本devicectypesstructfileint指向
1条回答
网友
1楼 · 发布于 2024-09-26 22:50:01

这不是你问题的确切答案,但可能会给你一些新的建议。在

当与复杂的本机库交互时,您可能需要编写一些C代码来“弥合鸿沟”,而单靠ctypes可能无法解决这个问题。桥代码在将C结构传递给Python之前简化了C结构,反之亦然,因为您可能无法用cype描述所有本机代码的优点。在

您可以手工编写本机Python C扩展,但不建议这样做。在

在这种情况下,您可以使用一些“桥接工具箱”或代码生成器。其中最流行的一个是Cython,它允许编写.pyx模块,可以自由地混合使用C和Python代码。在

http://cython.org/

然后将.pyx编译为生成的本机C模块和包装.py模块。您可以轻松地将后者导入到应用程序逻辑中。在

相关问题 更多 >

    热门问题