linux上插入一个usb设备,遍历发现其使用了两个节点(hidraw0和hidraw1)
但是使用
hidraw 和 hidapi 这两个东西都是用于访问 HID 设备(Human Interface Device)的一种方式。
hidraw 是一个驱动,它把 HID 设备直接暴露给应用层,应用层可以读取和写入 HID 设备的输入/输出报告。
hidapi 则是一个用于访问 HID 设备的库,它封装了操作 hidraw 的细节,并且支持跨平台(比如 Windows 和 Linux)。
在 Linux 上,如果一个 HID 设备插入到系统,可能会产生两个节点(hidraw0 和 hidraw1),它们分别代表这个 HID 设备的不同端口。
如果想使用 hidapi,你需要先安装它的开发包,然后在代码中引入头文件,使用其 API 进行读写操作即可。
不知道你这个问题是否已经解决, 如果还没有解决的话:hidapi 源码仓库为:https://github.com/libusb/hidapi 。主要目录介绍如下:
hidapi: 头文件(所有平台共用一份头文件)hidapi.h
libusb:Linux系统实现源码文件hid.c,使用libusb库实现的方式
linux:Linux系统实现源码文件hid.c,使用内核接口实现方式
windows:Windows系统实现源码文件hid.c
mac:Mac OSX 系统实现源码文件hid.c
hidtest:测试代码 hidtest.c
注意,Linux 系统有两种实现方式,各有千秋,可根据需求选择,笔者使用内核接口的实现方式。