我正在使用具有 USB 接口(interface)的压力感应床垫。制造商提供了适用于Windows的USB设备驱动程序,以及用C++编写的API,具有请求数据和设置一些参数的功能。
目前,我无法使用这个传感器直接测试一些Python数据可视化脚本,不得不让我的同事为我编写一个文本记录器,然后我用Python离线读取这些信息。
此外,我根本无法将 Linux 与传感器一起使用,因为没有适用于 Linux 的驱动程序,而且我不知道从哪里开始“破解”传感器,这就是我问的原因:
“如果我尝试直接使用 Python(或许在 Linux 中)从该传感器读取数据,我应该先做什么,或者先读取?”
编辑:设备有一个 FTDI 驱动程序 (FTD2XX.dll)(如果有帮助的话)。
非常欢迎任何帮助
最佳答案
很有可能它是一个 HID 设备,在这种情况下,您可能可以开始使用 libhid 为其编写用户空间 Linux 驱动程序。 。首先要枚举树,为您提供有关其功能的信息。 (lsusb -vvv
或 Example)
如果失败,您可以使用libusb在linux(以及现在的其他平台)上仍然编写用户空间驱动程序。您需要使用 something like usbsnoop或 real hardware equivalent看看官方驱动程序在与设备通信时会做什么,并从那里模仿它。
从 python 方面,您可能可以使用 SWIG 为现有的 C++ API 生成一个不错的包装器。花费相对较少的精力,特别是与开发完全自定义的驱动程序相比。
更新:
如果它是 FTDI 设备,那么使用起来可能会简单得多。根据供应商和产品 ID 显示的内容,它可能会自动与 Linux 中的 FTDI 驱动程序配合使用,为您提供 USB 串行端口。如果模块没有参数 - vendor
和 product
,我相信您可以使用它们来声明除了它已经知道的 pid/vid 组合之外的其他设备。从那里您可以尝试使用不同的设置打开串行端口设备。幸运的话,它可能已经定期发送状态信息。
如果不是,您想尝试找出官方软件发送的内容以使其开始播放。你又回到了嗅探的领域,但我认为很可能有一些东西是在串行层而不是 Windows 的 USB 层上完成的(尽管我不能说出任何名称)。您还可以通过尝试让他们的库使用软件模拟串行端口而不是 FTDI 设备并查看它写入的内容来学到一些东西。
关于c++ - 使用 Python 访问 USB 硬件(具有 native C++ API 的压力传感器矩阵),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7112063/