hidraw 和 hidapi 的问题

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库编译问题记录
  • 除此之外, 这篇博客: USB学习:hidapi库使用中的 hidapi 介绍 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    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 系统有两种实现方式,各有千秋,可根据需求选择,笔者使用内核接口的实现方式。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^