条码扫描仪解码

Barcode Scanner Decoding

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

我猜 40 是转义符,39 是 0,31 是 2。 经过一些研究后,我找不到此编码的相关关键代码 table。我尝试使用配置手册禁用所有其他编码格式(39、全 ascii、int 2 到 5..)。

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

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

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

以下是购买模块的link: Reader

非常感谢!

根据 microsoft.com 中的 this answer, a USB HID device sends USB usage codes, not ASCII character codes. That answer links to the lengthy official documentation on usb.org, but this document 似乎是一个简明的总结。如果这些链接将来断开,网络搜索 usb hid key codes 或类似内容应该会找到等效的。

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

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