向 USB 条码发送控制命令 Reader

Sending Control Commands to USB Barcode Reader

我们正在我们的一款产品中集成新条形码 reader (Newland NLS-FM430),我们需要控制其功能。我们已经用另一个 reader 实现了这个行为,但它是一个 RS232 版本,所以我们能够发送命令并等待它的输入。新的是 USB 版本,让事情变得不同。

一般来说,我们希望在应用程序启动时初始化条形码reader(例如禁用读取设置代码)并将其关闭。然后我们希望在需要输入时启用它,并在读取数据后再次禁用它。 user guide.

中记录了所有这些操作的命令

尝试与 USB 设备通信时出现问题。当连接到计算机时,它充当普通键盘(人机接口设备,设备管理器中的 HID),我们需要向它发送命令。为此,我们需要打开设备的流并写入其中。我们尝试了不同的库和解决方案,打开设备总是失败并出现 ACCESS_DENIED 错误。我怀疑设备已锁定,因为 Windows 将其用作键盘。

我发现 讨论了类似的问题。他们通过删除设备路径中的后缀 /kbd 找到了解决方法(我们的也有这个后缀)但是删除它对我们不起作用 - 它说找不到设备。

我正在研究 C# 或 C/C++ 中的解决方案,它可以打开与 USB 设备的连接并向其写入数据。非常感谢任何帮助。

你介绍的用户指南说扫描仪仍然支持串口模式。

第 76 页:USB CDC
第 79 页:IBM SurePOS(手持式)
第 79 页:IBM SurePOS(桌面)

在键盘输入仿真模式下可以停止使用,转而使用串口模式


这是因为,同样在用户指南的第 14 页 Chapter 3 System Settings 中,说明用户可以通过串行命令进行编程。

Command Programming

The FM430 can also be configured by serial commands sent from the host device.
Users can design an application program to send those command strings to the scanners to perform device configuration
For more information, refer to the Programming Guide Based on Newland Unified Command s Set.

此外,厂商提供的配置工具,也在用户指南的第13页Chapter 2 EasySet,不支持键盘输入模拟模式下的配置。

EasySet can communicate with device via one of the following interface: RS 232, USB COM Port Emulation (UFCOM driver required), USB CDC (UFCOM driver required), USB DataPipe (UFCOM driver required), USB HID POS.


此外,第 77 页的 HID POS (POS HID Barcode Scanner) 模式允许配置 input/output 作为 HID 的变体,如 USB.org 规范 HID Point of Sale Usage Tables 1.02 中所述。

但是,该方法将无法通知键盘输入仿真方法读取的条码。并且比串口模式下设置/input/output需要更复杂的编程。