从/ dev / hidraw1设备读取连接到linux系统

时间:2017-05-05 06:08:51

标签: linux qr-code barcode-scanner

我有一个连接到我的linux系统的QR /条形码扫描器,它作为/ dev / hidraw1设备。 如果我ls -la /dev/hidraw*我得到了

crw------- 1 root root 248, 0 May  5 10:18 /dev/hidraw0
crw------- 1 root root 248, 1 May  5 11:05 /dev/hidraw1

每当我尝试使用cat /dev/hidraw1命令从此设备读取时,我会获得大量垃圾数据以及编码数据,但它也不会以格式化方式出现。这是QR码之一的输出

    68<,?
          .4xml ve7'rsion4="1

..0"4    encod-%in4876g=
                                   "UTF-8"?><PrintLetterB,
                                                                       .arcod4e&D!'ata"&% ' uid=$"12345,.678",name=
                                                                                                                                      "Rohit 4Ka,
poo.44r,."4 gend&& er=4"M,."4 yob=8"319,93" co
                                                              ="S

                                                                  ,/O:
                                                                        Mukesh  4,

为什么它没有连续可读的字符串,改变波特率也没有任何区别。 Here is the screenshot attached

2 个答案:

答案 0 :(得分:0)

你的是HID设备,而不是RS-232设备。它使用的协议是二进制。每次read()来自设备时,您真正得到的是HID报告,而不是文本行。

报告的格式因设备而异。 HID规范要求设备发布描述报告格式的HID报告描述符。这很复杂,但如果您只想使用这个特定的设备,您可以查看阅读报告,并尝试推断它的含义。

根据我的经验,条形码扫描仪通常包含一个小标题,然后是有效负载数据。标题通常包含条形码类型和数据长度的字段。由于报告大小是固定的,但条形码是任意长的,长条形码被分成多个报告,所以还有标志来表示这是第一个,连续的还是最后一个块。

如果您要发布设备的转储,为了进一步分析,请不要使用cat。使用hexdump -Cod -tx1或类似的显示正确二进制数据的内容。

答案 1 :(得分:0)

大多数扫描仪可以配置为HID设备或USB CDC设备。请查看扫描仪的手册,例如&#34; USB接口配置&#34;并查看是否可以将其设置为USB CDC(或USB Com端口仿真)。如果可以,它将作为/ dev / ttyACM *附加在linux上,并提供数据作为串行流,更容易阅读。