【问题标题】:Barcode Scanner Decoding条码扫描器解码
【发布时间】:2017-03-13 16:48:25
【问题描述】:

我在解码一维中文条码阅读器的输出时遇到了一些问题。阅读器使用 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,这会弄乱读数。

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

以下是购买模块的链接: Reader

非常感谢!

【问题讨论】:

    标签: usb barcode barcode-scanner labview code128


    【解决方案1】:

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

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

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

    【讨论】:

    • 太棒了!感谢您的澄清,非常感谢我认为输出是条形码密钥代码表示,而不是 USB HID 表示(不同于 ASCII)
    猜你喜欢
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    相关资源
    最近更新 更多