我在解码1D中文条码阅读器的输出时遇到了一些麻烦。读卡器使用USB接口并作为键盘HID设备连接(我没有问题)。在将设备与Labview连接并生成inf驱动程序文件后,我尝试从配置手册" 000200"中的测试条形码中读取设备中断数据。设备的输出是按顺序发送的,如下所示" 39 39 39 31 39 39 40"。
我猜测40是转义字符39 39是0而31是2。 在做了一些研究之后,我找不到这个编码的相关密钥代码表。我尝试使用配置手册(39,完整的ascii,int 2到5 ..)禁用所有其他编码格式。
该模块能够读取大写字母并发送另一个字符,注意它是一个大写
设备在禁用Code 128后停止读取条形码。我重新启用此选项并且读取成功。但是代码128表有" G"分配给39输出,而不是0,这会影响读数。
有没有人使用以下格式?如果是这样的关键代码呢?或者我应该手动映射字符集吗?
以下是购买模块的链接: Reader
非常感谢您的支持!
答案 0 :(得分:0)
根据this answer,USB HID设备发送USB使用代码,而不是ASCII字符代码。该答案链接到usb.org上冗长的官方文档,但来自microsoft.com的this document似乎是一个简明的摘要。如果将来这些链接中断,则usb hid key codes
或类似网站的网络搜索应该找到相应的链接。
查看Microsoft文档中的HID Usage ID
列,' 0'的代码是十六进制的27
,十进制是39。 ' 2'是1F
是31,小数点后40是28
十六进制,对应于Return。这与您看到的输出一致,假设您将其报告为十进制值序列。正如您所观察到的那样,大写字母作为两个代码发送,其中第一个代码可能对应于' shift' HID使用表中的密钥。
您可以尝试搜索或询问LabVIEW VI将这些代码转换为ASCII字符,但根据上面链接的表格构建您自己的代码可能更快。要测试它,您可以使用条形码生成器程序或网页为您想要解码的所有字符创建条形码,并检查使用您的设备扫描它们是否正确输出。