我有一个作为 USB HID 连接的伽马能谱仪。当它被插入时,它会dmesg
告诉我为它制作了两个设备文件,hiddev0
并且hidraw2
(显然,编号并不重要。)
根据文档和对字节的目视检查,我想从hidraw2
. 但我很好奇正在通过什么样的数据,因为在我注意到存在hiddev0
之前,我一直试图弄清楚它。hidraw2
以下是来自 的一些示例数据hiddev0
。
00000000 01 00 00 ff 0d 00 00 00 01 00 00 ff 81 00 00 00 |................|
00000010 01 00 00 ff 0b 00 00 00 01 00 00 ff 00 00 00 00 |................|
00000020 01 00 00 ff 0e 00 00 00 01 00 00 ff c1 00 00 00 |................|
00000030 01 00 00 ff 08 00 00 00 01 00 00 ff 01 00 00 00 |................|
00000040 01 00 00 ff 08 00 00 00 01 00 00 ff 41 00 00 00 |............A...|
00000050 01 00 00 ff 0b 00 00 00 01 00 00 ff 31 00 00 00 |............1...|
00000060 01 00 00 ff 07 00 00 00 01 00 00 ff b1 00 00 00 |................|
00000070 01 00 00 ff 09 00 00 00 01 00 00 ff 01 00 00 00 |................|
00000080 01 00 00 ff 08 00 00 00 01 00 00 ff b1 00 00 00 |................|
00000090 01 00 00 ff 08 00 00 00 01 00 00 ff 51 00 00 00 |............Q...|
000000a0 01 00 00 ff 1d 00 00 00 01 00 00 ff 51 00 00 00 |............Q...|
000000b0 01 00 00 ff 0a 00 00 00 01 00 00 ff f1 00 00 00 |................|
000000c0 01 00 00 ff 08 00 00 00 01 00 00 ff 51 00 00 00 |............Q...|
000000d0 01 00 00 ff 34 00 00 00 01 00 00 ff 91 00 00 00 |....4...........|
根据要求,这是来自 的行dmesg
。
[411407.529580] hid-generic 0003:04D8:0023.0003: hiddev0,hidraw2: USB HID v1.01 Device [Kromek SIGMA50] on usb-0000:00:1a.1-2/input0
部分答案:
驱动程序是
hid-generic
,所以下一步是查看 HID 描述符。作为根,做然后查看 的内容
/sys/kernel/debug/hid/<dev>/rdesc
,其中<dev>
标识了您的设备。HID 描述符描述了您可以读取和写入描述符的格式
hidraw
(可能对您也很重要)。这些由内核 HID 解析器处理,然后发送到hiddev
描述符。至少对于输入设备,上述文件还包含有关内核解析器如何处理这些信息的信息,但我不确定hid-generic
.比较你看到的内容
hidraw
,hiddev
应该可以很好地猜测内核解析器的作用,并且怀疑人们是否可以阅读源代码。您可以在内核源代码中
Documentation/hid/hidraw.txt
找到更多信息。/Documentation/hid/hiddev.txt
评论中的“隐藏页”具有 HID 标准,如果您想阅读这些标准。