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

node-hid读取HDWR HD44条码阅读器报错:could not read from HID device

解决Windows11下node-hid读取HDWR HD44条码阅读器失败的问题

核心原因

你的条码阅读器设备信息里usagePage: 1、usage: 6,说明它当前工作在HID键盘仿真模式。Windows系统会独占这类设备的输入权限,node-hid无法直接读取设备数据,这就是报错的根本原因。

具体解决方案

1. 切换条码阅读器的工作模式

大部分条码阅读器支持通过扫描特定设置条码切换工作模式,你需要:

  • 查找HDWR HD44的官方说明书,找到切换模式的设置条码(目标模式选USB Raw HID或串口模式,不要选键盘仿真)。
  • 扫描对应条码后,设备会退出键盘独占模式,此时node-hid可以正常读取数据。

2. 调整设备路径选择

如果设备有多个HID接口,当前路径末尾的\KBD是键盘接口的标识。你可以修改代码,筛选同vendorId和productId下不带\KBD的接口:

const deviceInfo = devices.find(d => 
  d.vendorId === 1046 && 
  d.productId === 49473 && 
  !d.path.includes('\\KBD')
);

3. 改用键盘输入捕获方案(无需切换设备模式)

如果无法切换设备模式,可直接捕获条码器模拟的键盘输入,示例代码(使用iohook库):

const ioHook = require('iohook');

let barcodeBuffer = '';

ioHook.on('keydown', (event) => {
  // 捕获可打印字符(根据条码器输出调整过滤规则)
  if (event.rawcode >= 48 && event.rawcode <= 90) { // 数字、字母范围
    barcodeBuffer += String.fromCharCode(event.rawcode);
  }
  // 条码器通常以回车结束,触发数据处理
  if (event.keycode === 28) {
    console.log('读取到条码:', barcodeBuffer);
    barcodeBuffer = '';
  }
});

ioHook.start();

安装依赖:npm install iohook

4. 切换到串口模式后使用serialport读取

如果设备切换到串口模式,可使用serialport库读取数据:

const { SerialPort } = require('serialport');

const port = new SerialPort({
  path: 'COM3', // 替换为你的设备串口
  baudRate: 9600 // 匹配条码器的波特率
});

port.on('data', (data) => {
  console.log('读取到条码:', data.toString().trim());
});

安装依赖:npm install serialport

内容的提问来源于stack exchange,提问作者Ja Tutaj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:42:55