在 OS X 上的 Datalogic 条码扫描仪中启用 USB-OEM (HID POS) 模式
Enable USB-OEM (HID POS) mode in a Datalogic barcode scanner on OS X
我正在尝试在 Mac 上使用来自应用程序的 Datalogic 条码扫描器(Gryphon 44xx 型号)(即我不是在编写设备驱动程序)。
我不想使用扫描仪的键盘模拟,而是使用特殊的 USB HID 扫描仪协议,Datalogic 称之为 "USB-OEM" 模式。
我已经成功地在这种模式下使用不同的扫描仪(GoDEX 型号),它在扫描代码时会向我发送 HID 数据包。
但是,Datalog 扫描器不会尝试扫描,也不会将扫描数据发送到 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 数据包嗅探器解决了这个问题)。 (See German forum article).
但是,我不知道如何在 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,128码是00h 18h 0Bh。
我正在尝试在 Mac 上使用来自应用程序的 Datalogic 条码扫描器(Gryphon 44xx 型号)(即我不是在编写设备驱动程序)。
我不想使用扫描仪的键盘模拟,而是使用特殊的 USB HID 扫描仪协议,Datalogic 称之为 "USB-OEM" 模式。
我已经成功地在这种模式下使用不同的扫描仪(GoDEX 型号),它在扫描代码时会向我发送 HID 数据包。
但是,Datalog 扫描器不会尝试扫描,也不会将扫描数据发送到 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 数据包嗅探器解决了这个问题)。 (See German forum article).
但是,我不知道如何在 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,128码是00h 18h 0Bh。