我有一个由PNI公司开发的传感器,叫做spacepoint-fusion。我需要在C++中与这个设备连接,并不断地从设备中读取新数据。
当我将设备插入我的计算机时,我看到/dev/hidraw1和/dev/hidraw2出现。此外,还会显示/dev/usb/iddev0。
我的问题是我不知道如何读取这些设备。我在网上找不到任何示例或文档。我甚至不知道从何说起。我一直在寻找libhid和hiddev作为可能的解决方案,但到目前为止,我还不知道如何使用这两个库。
那么,在linux机器上,如何在c++中读取这个人机接口设备呢?我们将非常感谢这些例子。谢谢。
发布于 2012-01-02 04:21:59
尝试在hidraw设备上运行hexdump,并在您的“spacepoint-fusion”上创建一些输入。
$ hexdump -C /dev/hidraw1如果您获得了一些有用的数据,那么最简单的方法就是使用open()和read()从设备获取输入。每个read()应从您的设备返回一个信息包。您需要为您的设备提供一些文档,或者准备好对数据包的含义进行反向工程。
发布于 2011-01-17 03:28:31
您应该使用libusb库:http://libusb.sourceforge.net/doc/index.html
#include <libusb.h>另一种方法是将/dev/usb/iddev0读为简单的文件,并进行读写系统调用。参见: man open,man 2 read,man 2 write。
#include <fcntl.h>
#include <unistd.h>发布于 2011-11-06 22:04:55
你前面有一条复杂的路。您首先需要有关"spacepoint-fusion“的信息(希望随文档一起提供)。
一些初始值,例如Product ID/Vendor ID,可以使用终端命令获取:
lsusb接下来,您可能需要知道端点,您也可以使用以下命令找到端点:
lsusb -v由此,您可以找到设备上哪些地址可以写入,哪些地址可以读取(可能还有读/写缓冲区的大小)。但在没有适当文档的情况下,您只能做到这一点。您需要知道要写入设备的值,以及期望从设备返回的值。
假设您确实知道从设备读取/向设备写入哪些值,请尝试并遵循以下示例:
http://www.lvr.com/code/generic_hid.c
我还假设你的设备是HID兼容的,这根本不是必须的。无论如何,我祝你的USB之旅一帆风顺。
https://stackoverflow.com/questions/4707014
复制相似问题