linux 下利用ioctl读取HID设备 求助

时间:2021-02-06 16:11:49
感谢您的时间.
我现在需要对一个HID设备,计步器,内部数据进行读取.以前没接触过这个,网上资料看不明白

我查到的资料中大部分就是 一个例子,利用了四个结构体
        struct hiddev_report_info rinfo;//1号
struct hiddev_usage_ref uref;//2号
struct hiddev_field_info finfo;//3号
struct hiddev_usage_ref_multi urefs;//4号

和IOCTL()系统调用来和HID设备通信,代码中根本没有注释
我一个是这些结构体中的成员变量什么含义不知道,再一个这个步骤看不出个所以然,我分析了一遍,理不出来.
我不懒,但可能脑袋不灵光,看了几天也不知道怎么下手. 我想知道由什么书籍,或者手册介绍了HID设备的读取,或者从哪里入手可以对这个步骤过程有个了解呢.
谢谢.


我QQ954423389 ,邮箱qinweiqiang_2007@126.com  

另外我想知道一点,我现在手里只有设备,通过软件抓包得到了各种描述符,我想问下过来人,只通过 报告描述符,能知道抓过来的数据是什么含义么,包括时间,日期,具体数据什么的.  避免自己做无用功,谢谢

5 个解决方案

#1


看一看USB协议和HID协议吧。报告描述符就是用来规定发送的数据代表什么意义。

#2


你好,我一直在研究那个HID协议,因为事情压着,担心走错路,所以还是再请教你下:
那个报告描述符说的是发送的数据是什么意义,可是我现在也不知道用什么固定的步骤去利用IOCTL 获取这个数据,我看了LINUX内核中的.txt帮助文档,里面写到HIDDEV API ,但也只是说了每个宏的意义,这些API用什么顺序去使用,我从哪里知道呢。 
USB协议好多,貌似现在没时间去全看,我看到HID协议是97页,正在看,我需要看哪几个就能解决我的疑惑呢。谢谢您的时间
引用 1 楼 forhappy 的回复:
看一看USB协议和HID协议吧。报告描述符就是用来规定发送的数据代表什么意义。

#3


用libusb,比较简单

#4


如果驅動是現成的話,直接就在應用程序中採用ioctl就行了。如果沒有驅動的話,參考hid-bright.c編寫一個驅動。不過ioctl的命令還是通用的,其具體命令在hiddev.txt

#5


usbhid的核心驅動在hiddev.c中

#1


看一看USB协议和HID协议吧。报告描述符就是用来规定发送的数据代表什么意义。

#2


你好,我一直在研究那个HID协议,因为事情压着,担心走错路,所以还是再请教你下:
那个报告描述符说的是发送的数据是什么意义,可是我现在也不知道用什么固定的步骤去利用IOCTL 获取这个数据,我看了LINUX内核中的.txt帮助文档,里面写到HIDDEV API ,但也只是说了每个宏的意义,这些API用什么顺序去使用,我从哪里知道呢。 
USB协议好多,貌似现在没时间去全看,我看到HID协议是97页,正在看,我需要看哪几个就能解决我的疑惑呢。谢谢您的时间
引用 1 楼 forhappy 的回复:
看一看USB协议和HID协议吧。报告描述符就是用来规定发送的数据代表什么意义。

#3


用libusb,比较简单

#4


如果驅動是現成的話,直接就在應用程序中採用ioctl就行了。如果沒有驅動的話,參考hid-bright.c編寫一個驅動。不過ioctl的命令還是通用的,其具體命令在hiddev.txt

#5


usbhid的核心驅動在hiddev.c中