c++ - 使用 Python 访问 USB 硬件(具有 native C++ API 的压力传感器矩阵)

标签 c++ python usb sensors hardware-interface

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

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

此外,我根本无法将 Linux 与传感器一起使用,因为没有适用于 Linux 的驱动程序,而且我不知道从哪里开始“破解”传感器,这就是我问的原因:

“如果我尝试直接使用 Python(或许在 Linux 中)从该传感器读取数据,我应该先做什么,或者先读取?”

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

非常欢迎任何帮助

最佳答案

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

如果失败,您可以使用libusb在linux(以及现在的其他平台)上仍然编写用户空间驱动程序。您需要使用 something like usbsnoopreal hardware equivalent看看官方驱动程序在与设备通信时会做什么,并从那里模仿它。

从 python 方面,您可能可以使用 SWIG 为现有的 C++ API 生成一个不错的包装器。花费相对较少的精力,特别是与开发完全自定义的驱动程序相比。

更新:

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

如果不是,您想尝试找出官方软件发送的内容以使其开始播放。你又回到了嗅探的领域,但我认为很可能有一些东西是在串行层而不是 Windows 的 USB 层上完成的(尽管我不能说出任何名称)。您还可以通过尝试让他们的库使用软件模拟串行端口而不是 FTDI 设备并查看它写入的内容来学到一些东西。

关于c++ - 使用 Python 访问 USB 硬件(具有 native C++ API 的压力传感器矩阵),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7112063/

相关文章:

android - 通过USB将两个android设备连接在一起

Android 设备选择器将我的 Galaxy S4 检测为 "unknown"

c++ - 在这个 C++ TCP 客户端中,我在哪里设置 TCP_NODELAY?

c++ - 根据 c-tor 的特定条件选择要初始化的变量?

python - 从 BERT 获取嵌入查找结果

python - Matplotlib 填充 alpha 改变颜色

linux - linux命令访问连接到嵌入式PC的USB内存棒?

c++ - 动态分配时指向免费商店的新地址是一种好习惯吗?

c++ - 将类成员绑定(bind)到普通 C 函数指针

python - 为什么 "type"不在 "int"的 MRO 中?