使用Python访问USB硬件(带有本地c++ API的压力传感器矩阵)

Access USB hardware (pressure sensor matrix with native C++ API) using Python

本文关键字:API c++ 压力 传感器 USB 访问 Python 硬件 使用      更新时间:2023-10-16

我正在使用一个带有USB接口的压力传感床垫。制造商提供了Windows的USB设备驱动程序,以及用c++编写的API,该API具有请求数据和设置一些参数的功能。

目前,我不能直接使用这个传感器来测试一些Python数据可视化脚本,因为我不得不让我的同事为我写一个文本记录器,然后我用Python脱机读取这些信息。

此外,我不能使用Linux与传感器,因为没有Linux驱动程序,我不知道从哪里开始"破解"传感器,这就是为什么我问:

"如果我尝试用Python或者Linux直接从这个传感器读取数据,我应该先做什么,还是先读取?"

编辑:设备有一个FTDI驱动程序(FTD2XX.dll),如果它有帮助。

欢迎任何帮助

很可能它是一个HID设备,在这种情况下,您可以开始使用libhid为它编写一个用户空间linux驱动程序。首先要做的是枚举树,它提供了关于它的功能的信息。(lsusb -vvv或Example)

失败,你可以使用libusb在linux(和其他平台,这些天)写一个用户空间驱动程序。您将需要使用usbsnoop之类的东西或真正的硬件等效程序来查看官方驱动程序在与设备通信时做了什么,并从那里模拟它。

在python端,您可以使用SWIG生成一个合适的包装器,用于现有的c++ API,而相对较少的工作量,特别是与开发一个完全自定义的驱动程序相比。

更新:

如果它是一个FTDI设备,那么它可能更容易使用。根据供应商和产品ID显示的内容,它可能会自动与Linux中的FTDI驱动程序一起工作,为您提供USB串行端口。如果模块没有参数- vendorproduct,我相信您可以使用它来声明它已经知道的pid/vid组合之外的其他设备。从那里你可以尝试用不同的设置打开串行端口设备。如果幸运的话,它可能已经定期发送状态信息了。

如果它不是你想尝试和发现什么官方软件发送使它开始播放。您又回到了嗅探的领域,但我认为可能会有一些东西在串行层而不是USB层为窗口(尽管我不能命名任何)。您也可以通过尝试使他们的库使用软件模拟串行端口而不是FTDI设备来了解一些东西,并查看它写了什么。

FTDI芯片有linux驱动程序。去FTDI网站下载就行了。驱动程序创建一个虚拟串行端口。您可以使用PySerial与它连接。

可惜我没有早点看到这篇文章!