我在解码一维中文条形码读取器的输出时遇到一些麻烦。读者使用USB接口并作为键盘HID设备连接(我对此没有问题)。将设备与LabView接口并生成INF驱动程序文件后,我尝试读取设备从配置手册" 000200"中的测试条形码中断数据,该设备的输出是串行发送的,如下所示,如下所示,如下所示。。
我猜想40是39是0,而31为2。进行了一些研究之后,我找不到此编码的相关密钥代码表。我尝试使用配置手册禁用所有其他编码格式(39,Full ASCII,INT 2至5 ..)。
该模块能够读取上案字母并发送另一个字符,并指出它是上案例
禁用代码128后,设备停止读取条形码。我重新启用了此选项,并且阅读成功。但是,代码128表的" g"分配给了39个输出,而不是弄乱读数的0。
有人使用以下格式吗?如果是这样,哪个关键代码是?还是我应该手动映射字符集?
以下是购买模块的链接:读者
谢谢你非常感谢!
根据此答案,USB HID设备发送USB使用代码,而不是ASCII字符代码。该答案链接到USB.org上冗长的官方文档,但是Microsoft.com的此文档似乎是简单的摘要。如果这些链接将来破裂,则对usb hid key codes
或类似的网络搜索应找到等效。
查看Microsoft文档上的HID Usage ID
列," 0"的代码为十六进制中的27
,十进制为39。'2'是1F
,即31,而40个小数为28
十六进制,对应于返回。假设您将其报告为一系列小数值,那将与您看到的输出相一致。正如您所观察到的,大写字母以两个代码发送,第一个代码可能对应于HID使用表中的" shift"键。
您可以尝试搜索或索取LabView VI以将这些代码转换为ASCII字符,但是根据上面链接的表,可以更快地构建自己的代码。要测试它,您可以使用条形码生成器程序或网页来为您想要解码的所有字符创建条形码,并检查使用设备扫描它们提供正确的输出。