使用Python访问USB硬件(带有本地c++ API的压力传感器矩阵)
Access USB hardware (pressure sensor matrix with native C++ API) using Python
我正在使用一个带有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串行端口。如果模块没有参数- vendor
和product
,我相信您可以使用它来声明它已经知道的pid/vid组合之外的其他设备。从那里你可以尝试用不同的设置打开串行端口设备。如果幸运的话,它可能已经定期发送状态信息了。
如果它不是你想尝试和发现什么官方软件发送使它开始播放。您又回到了嗅探的领域,但我认为可能会有一些东西在串行层而不是USB层为窗口(尽管我不能命名任何)。您也可以通过尝试使他们的库使用软件模拟串行端口而不是FTDI设备来了解一些东西,并查看它写了什么。
FTDI芯片有linux驱动程序。去FTDI网站下载就行了。驱动程序创建一个虚拟串行端口。您可以使用PySerial与它连接。
可惜我没有早点看到这篇文章!
- 用于访问容器<T>数据成员的正确 API
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++MySQL C api用户输入行
- 如何使用 AWS Transcribe C++ API 中的'StartTranscriptionJobRequest'?
- 将std::string传递给WriteConsole API
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 在gtest.中使用fff.h模拟系统API
- 有没有任务栏API可以立即应用注册表更改
- C++win32 API创建多个类似视口的窗口
- 使用libcurl提交批量url的正确BING Api POST url是什么
- 如何将真正的字符串从python c-api转换为python脚本
- 使用Qt框架在c ++类中创建API调用
- Libreoffice API (UNO):需要更改用户的 xTextField 文本
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- 使用 Python Extension API 包装复杂C++类
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- 第三方 API 中的编译错误 - Visual Studio
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- clang 的 libFuzzer 可以在同一二进制文件中测试超过 1 个 API 吗?
- Issues with Win32 ReadProcessMemory API