首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与HID对话

与HID对话
EN

Stack Overflow用户
提问于 2011-01-17 01:55:35
回答 3查看 5.6K关注 0票数 5

我有一个由PNI公司开发的传感器,叫做spacepoint-fusion。我需要在C++中与这个设备连接,并不断地从设备中读取新数据。

当我将设备插入我的计算机时,我看到/dev/hidraw1和/dev/hidraw2出现。此外,还会显示/dev/usb/iddev0。

我的问题是我不知道如何读取这些设备。我在网上找不到任何示例或文档。我甚至不知道从何说起。我一直在寻找libhid和hiddev作为可能的解决方案,但到目前为止,我还不知道如何使用这两个库。

那么,在linux机器上,如何在c++中读取这个人机接口设备呢?我们将非常感谢这些例子。谢谢。

EN

回答 3

Stack Overflow用户

发布于 2012-01-02 04:21:59

尝试在hidraw设备上运行hexdump,并在您的“spacepoint-fusion”上创建一些输入。

代码语言:javascript
复制
$ hexdump -C /dev/hidraw1

如果您获得了一些有用的数据,那么最简单的方法就是使用open()read()从设备获取输入。每个read()应从您的设备返回一个信息包。您需要为您的设备提供一些文档,或者准备好对数据包的含义进行反向工程。

票数 2
EN

Stack Overflow用户

发布于 2011-01-17 03:28:31

您应该使用libusb库:http://libusb.sourceforge.net/doc/index.html

代码语言:javascript
复制
   #include <libusb.h>

另一种方法是将/dev/usb/iddev0读为简单的文件,并进行读写系统调用。参见: man open,man 2 read,man 2 write。

代码语言:javascript
复制
   #include <fcntl.h>
   #include <unistd.h>
票数 1
EN

Stack Overflow用户

发布于 2011-11-06 22:04:55

你前面有一条复杂的路。您首先需要有关"spacepoint-fusion“的信息(希望随文档一起提供)。

一些初始值,例如Product ID/Vendor ID,可以使用终端命令获取:

代码语言:javascript
复制
lsusb

接下来,您可能需要知道端点,您也可以使用以下命令找到端点:

代码语言:javascript
复制
lsusb -v

由此,您可以找到设备上哪些地址可以写入,哪些地址可以读取(可能还有读/写缓冲区的大小)。但在没有适当文档的情况下,您只能做到这一点。您需要知道要写入设备的值,以及期望从设备返回的值。

假设您确实知道从设备读取/向设备写入哪些值,请尝试并遵循以下示例:

http://www.lvr.com/code/generic_hid.c

我还假设你的设备是HID兼容的,这根本不是必须的。无论如何,我祝你的USB之旅一帆风顺。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4707014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档