Node.js+Electron环境下Honeywell MS 9540条码扫描器调用报错求助
解决Honeywell MS 9540条码扫描器在Windows上无法通过usb-barcode-scanner打开的问题
我之前在Windows平台对接Honeywell扫描器时也碰到过类似的设备打开失败问题,结合你的代码和报错信息,给你整理几个针对性的排查和解决步骤:
1. 先解决Windows权限问题(最关键)
Windows对USB HID设备的访问权限管控很严格,普通用户权限下根本没法直接操作硬件:
- 右键启动你的Node.js脚本或Electron应用,选择以管理员身份运行,先测试是否能正常连接
- 如果是打包后的Electron应用,需要在打包配置里添加管理员权限要求(用electron-builder的话,在
package.json的build.win字段里补充:"win": { "requestedExecutionLevel": "requireAdministrator" }
2. 修正设备路径的格式错误
你代码里的path字段带有HTML转义字符&,这是复制路径时的格式问题,正确的路径需要把&替换成&:
let scanner = new UsbScanner({ vendorId: 3118, productId: 512, path: '\\\\?\\hid#vid_0c2e&pid_0200#6&24268576&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\\kbd' });
另外,其实可以不用手动指定path,直接通过vendorId和productId让包自动匹配设备,能避免路径格式出错:
let scanner = new UsbScanner({ vendorId: 3118, // 对应0xc2e的十进制值 productId: 512 // 对应0x200的十进制值 });
3. 确认扫描器的工作模式
Honeywell MS9540默认是键盘楔入模式(Keyboard Wedge),这种模式下扫描器会模拟键盘输入数据,而不是作为独立HID设备被Node.js读取。你需要把它切换到USB HID POS模式:
- 找扫描器的说明书,里面有专门的设置条码,扫描对应“USB HID POS”的切换条码即可
- 切换后,设备管理器里的扫描器会显示为HID设备,而非键盘类设备
4. 排查驱动和设备状态
- 打开Windows设备管理器,在人机接口设备下找到Honeywell扫描器,检查有没有黄色感叹号,确保驱动正常安装
- 如果驱动异常,卸载设备后重新插拔,让Windows自动安装通用HID驱动;也可以去Honeywell官网下载官方驱动
5. 用底层usb包测试设备访问
如果上面的步骤都没解决,用usb包(usb-barcode-scanner的底层依赖)测试基础设备访问,缩小问题范围:
const usb = require('usb'); const device = usb.findByIds(3118, 512); if (device) { try { device.open(); console.log('设备打开成功!'); device.close(); } catch (err) { console.error('底层usb包打开设备失败:', err); } } else { console.log('未找到指定的USB设备'); }
如果这个测试也报错,问题大概率在系统权限或驱动上;如果测试成功,那可能是usb-barcode-scanner包的配置问题,尝试更新包到最新版本。
你的原始代码参考
const express = require('express') const app = express() const { getDevices, UsbScanner } = require('usb-barcode-scanner') console.log(getDevices()) let scanner = new UsbScanner({ vendorId: 3118, productId: 512, path: '\\\\?\\hid#vid_0c2e&pid_0200#6&24268576&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\\kbd' }); scanner.on('data', (data) => { console.log(data); }); app.listen(8000, function () { console.log(`Express listening on port ` + 8000) });
内容的提问来源于stack exchange,提问作者Bakhrom
相关产品推荐
相关产品推荐

