我正在尝试通过应用程序在 Mac 上使用 Datalogic 条码扫描仪(Gryphon 44xx 型号)(即我没有编写设备驱动程序)。
我不想使用扫描仪的键盘模拟,而是使用特殊的 USB HID 扫描仪协议,Datalogic 称为“USB-OEM”模式。
我已经成功地在此模式下使用不同的扫描仪(GoDEX 模型),每当它扫描代码时都会向我发送 HID 数据包。
但是,数据记录扫描仪不会尝试扫描也不会将扫描数据发送到 Mac。
然后我了解到 Datalogic得利捷扫描仪希望在开始扫描之前从主机获取额外的配置数据。有人告诉我,我需要发送包含以下内容的 HID 数据报:
{0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
或 {1, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
(该人通过使用 USB 数据包嗅探器发现了这一点)。 (参见德国论坛文章)。
但是,我不知道如何在 OS X 上实现这一点。或者更确切地说,无论我尝试过什么,它都不起作用。最好的情况是,我得到的响应值为
81 00 00 00 00 00 00 00 00
,但也不知道这意味着什么。
我尝试使用 USB Prober(在 OS X 10.7.5 上)来查看实际传输到扫描仪的数据,但该工具似乎无法向我显示传输的数据包:当使用其日志记录时在级别 6 的功能中,我什么也看不到,而在级别 7 时,我每秒获得 1000 行输出,并且无法找到与我的通信相关的任何数据包数据 - 遗憾的是,也没有该工具的文档,或者有吗?.
我还查看了一些 USB HID 和 POS(销售点)规格,但我不明白其中任何一个,尽管看了几个小时。
任何人都可以给我一些关于如何解释 POS 规格、如何找到启用扫描仪的选项以及它与配置它的 IOKit(用户级)功能的关系吗?我的意思是,有很多关于报告之类的内容,但我无法将规范和 OS X API 之间的点联系起来。
事实证明我错误地解释了记录的数据。
扫描仪需要发送一条只有11字节的消息:
{17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
这将启用它。
扫描仪随后以以下格式响应 64 字节长度的数据报:
Byte 0: length of payload
Byte 1: status byte 0
Byte 2: status byte 2
Byte 3: status byte 2
Byte 4 to <length minus 4>: barcode data and type code
Byte <length of payload> to 63: zero
类型代码是识别标签类型的一到三个字节,例如QR 码为 00h 33h 0Bh,Code 128 为 00h 18h 0Bh。
当您对扫描仪进行编程以使用 OEM-USB 接口时,您的主机驱动程序只需实现 IBM 创建的 USB-OEM 接口规范。因此,下载该规范并实施它。