4

我们的接待处有一个插入 Macbook Mini 的条形码扫描仪,由接待员使用。当人们“登记”时,他们使用条形码扫描仪扫描他们的会员卡,然后将其写入浏览器窗口。

如果接待员打开了其他东西,因此相关的浏览器窗口不是焦点,那么输入将被忽略。

到目前为止,我发现输入在 OSX 中看起来像键盘。我的计划是拦截来自“键盘”的输入并使用 AppleScript 始终将其发送到同一个浏览器窗口。

我意识到整个事情都可以改进 - 使用一个专用的微型设备,它只使用 API 发出 CURL 请求。但是,目前没有API,没有微设备,我需要尽快解决。

那么如何截取来自特定键盘的输入呢?还是有其他快速解决方案?

4

2 回答 2

4

我不得不在 Windows 上做类似的事情。在我的情况下,浏览器窗口通常没有打开,我不得不打开它并浏览特定于条形码数据的地方。

我发现许多条码扫描仪可以模拟串行端口,即使它们有 USB 连接,包括我的那个。

在大多数编程语言中,串行端口数据非常容易阅读,因此我采用的解决方案是一个 Java Windows 服务,它接收串行端口扫描并在扫描时打开相应的 URL。前段时间我在这里发布了一些基本的扫描阅读器代码。

无论如何,您可以查看您的模型是否可以模拟串行端口数据,然后您可以为您的目的捕获它,我认为它会比键盘挂钩更好。

于 2012-04-14T06:02:15.280 回答
0

解决问题的现代方法是将条形码扫描仪配置为使用所谓的 HID POS 或 USB OEM 模式。在该模式下,扫描仪仍然通过 USB 直接连接到计算机,但它不会再发送键盘按键,而是发送类似于您在串行端口模式下获得的代码。

USB HID 规范确实定义了条码扫描仪的代码,并且一些扫描仪,如 GoDEX 制造的扫描仪,遵循此协议。为此,您必须在您的 OS X 应用程序中实现一些 USB 特定代码,使用 IOKit API 进行用户空间处理。但我发现完成起来并不难。

但是,某些扫描仪,例如 Datalogic 制造的扫描仪,不使用扫描仪的官方 HID 协议。相反,他们使用未公开记录的私有协议。不过,通过一些逆向工程和挖掘,我也发现了该协议。

有关详细信息,请参阅我的问题“在 Datalogic 条码扫描仪中启用 USB-OEM (HID POS) 模式”

但是,如果您不想走这条编写自己的 USB 处理程序的路线,您总是可以获取一个通用的串行到 USB 适配器并在您的 Mac 上安装匹配的串行驱动程序,然后在串行模式下使用扫描仪. 获取串行适配器时,一般有两种类型:一种使用 Prolific 芯片组,另一种使用 FTDI 芯片组。制造商对 Prolific 的支持很差——他们的驱动程序已经过时,甚至不支持全系列的控制线(CTS、RTS 等)。但是,我可以推荐一个独立的驱动程序:https ://www.mac-usb-serial.com - 它不是免费的,但它得到了很好的支持,我可以确认它在串行端口上与 Datalogic 条形码扫描仪一起可靠地工作,并且通过基于 Prolific 的适配器连接到 Mac。

于 2016-05-16T15:13:02.683 回答