0

我在解码一维中文条码阅读器的输出时遇到了一些麻烦。阅读器使用 USB 接口并作为键盘 HID 设备连接(我没有问题)。将设备与 Labview 连接并生成 inf 驱动程序文件后,我尝试从配置手册“000200”中的测试条码读取设备中断数据,设备的输出串行发送,如下所示“39 39 39 31 39 39 40” .

我猜 40 是转义字符,39 是 0,31 是 2。经过一番研究,我找不到这种编码的相关键码表。我尝试使用配置手册(39,完整的 ascii,int 2 到 5..)禁用所有其他编码格式。

该模块能够读取大写字母并发送一个附加字符,指出它是大写字母

禁用 Code 128 后设备停止读取条形码。我重新启用此选项并且读取成功。但是,代码 128 表将“G”分配给 39 输出,而不是 0,这会弄乱读数。

有人使用以下格式吗?如果是这样,它是哪个键码?还是我应该手动映射字符集?

以下是购买模块的链接: 阅读器

谢谢,非常感谢!

4

1 回答 1

1

根据这个答案,USB HID 设备发送 USB 使用代码,而不是 ASCII 字符代码。该答案链接到usb.org上冗长的官方文档,但来自 microsoft.com 的这份文档似乎是一个简明的摘要。如果将来这些链接断开,则网络搜索usb hid key codes或类似内容应该会找到等效链接。

查看HID Usage IDMicrosoft 文档上的列,“0”的代码是27十六进制的,即十进制的 39。'2' 是1F31,十进制 40 是28对应于 Return 的十六进制。假设您将其报告为十进制值序列,这将与您看到的输出一致。正如您所观察到的,一个大写字母作为两个代码发送,第一个可能对应于 HID 使用表中的“shift”键。

您可以尝试搜索或询问 LabVIEW VI 以将这些代码转换为 ASCII 字符,但根据上面链接的表格构建您自己的代码可能会更快。要对其进行测试,您可以使用条形码生成器程序或网页为您希望能够解码的所有字符创建条形码,并检查使用您的设备扫描它们是否会产生正确的输出。

于 2017-03-14T10:18:05.567 回答