javascript - 如何使用 node-hid 库将来自 device.on() 方法的数据响应转换为字符串

标签 javascript node.js barcode hid

我必须在 NodeJS 中实现一个 API,它连接到 HID 接口(interface)扫描器以读取条形码,我正在使用 NodeJS 调用 node-hid 的库,该库允许连接到接口(interface) USB,代码是:

//import
var HID = require('node-hid');

//connect to my interface
var device = new HID.HID(int,int)

//print all devices
console.log('DEVICE: ', device )

//My device is: 

{
    vendorId: int,
    productId: int,
    path: 'IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/XHC1@14/XHC1@14000000/....',
    serialNumber: '',
    manufacturer: 'Microchip Technology Inc.',
    product: 'Keyboard',
    release: 1,
    interface: 0,
    usagePage: 1,
    usage: 6
  }

到这里,一切都好

对于从我的设备读取事件和查看数据扫描,我必须实现这个:

device.on('data', function(data) {
 console.log(data.toString())
} )

响应是:

**'

'

,

$

$

'













%**

文档说使用 toString() 就足够了,但结果不是预期的结果:00 7702111228221

没有 .toString 返回和打印的数据是:

<Buffer 00 00 27 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 27 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 2c 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 24 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 24 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 27 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 1f 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 1e 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 1e 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 1e 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 1f 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 1f 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 25 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 1f 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 1f 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 1e 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>

有人有这方面的经验。谢谢!

最佳答案

缓冲区中的代码是来自典型 USB 键盘的 HID 报告。它们在 Universal Serial Bus HID Usage Tables 中进行了描述第 10 章“键盘/小键盘页面 (0x07)”中的文档。每个报告的格式取决于报告描述符,但几乎总是:1 字节修饰符(ctrl、alt 等),1 字节保留,6 字节表示最多同时按下 6 个键。包含全零的报告意味着“当前没有按键被按下”。

在您的示例中,缓冲区指示以下顺序:

27 = '0' key pressed
00 = no keys pressed
27 = '0' key pressed
00 = no keys pressed
2c = Space key pressed
00 = no keys pressed
24 = '7' key pressed
00 = no keys pressed
.
.
.

...等等。

关于javascript - 如何使用 node-hid 库将来自 device.on() 方法的数据响应转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62489728/

相关文章:

c - 在 Code 128 条码中编码扩展 ASCII 字符

javascript - 将 javaScript 对象转换为不同的对象类型

javascript - JS/TS判断一个JSON对象是否实现类或接口(interface)

javascript - 环回允许所有用户访问只有所有者才能看到的内容

javascript - Node.js 变量作用域

qt4 - Qt4中的USB条码阅读器

javascript - 从我的greasemonkey脚本中监听一个事件

javascript - 在 Node.JS/NPM 的 MySQL 库中使用带有查询的 Promise

node.js - 即使 NPM_CONFIG_Production 为 true,为什么也会跳过 devDependency 的修剪?

java - 如何制作一个应用程序,能够从 Android 手机本身的 SD 卡中获取的条形码图像扫描条形码?