You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 14:02:40