我正在尝试在Mac上使用Datalogic条形码扫描仪(Gryphon 44xx型号)来自应用程序(即我没有编写设备驱动程序)。
我不想使用扫描仪的键盘仿真,而是使用特殊的USB HID扫描仪协议,称为" USB-OEM"模式由Datalogic。
我已成功设法在此模式下使用不同的扫描程序(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之间的点连接起来。
答案 0 :(得分:2)
原来我错误地解释了记录的数据。
扫描程序需要发送一个只有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。