如何使用 node-hid 库将来自 device.on() 方法的数据响应转换为字符串
How to convert to string the data response from device.on() method using node-hid library
我必须在 NodeJS 中实现一个 API 连接到 HID 接口扫描仪以读取条形码,我正在使用 NodeJS 调用 node-hid 的库,该库允许连接到接口 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 报告。它们在第 10 章“Keyboard/Keypad 页面 (0x07)”的 Universal Serial Bus HID Usage Tables 文档中进行了描述。每个报告的格式取决于报告描述符,但几乎总是: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
.
.
.
...等等。
您可以使用磁条 npm 包并使用它的 parse_card 方法获取 json 格式的数据。
const parser = require('mag-stripe');
device.on('data', function(data) {
let result = parser.parse_card(data.toString());
console.log("data ===> ",result)
})
我必须在 NodeJS 中实现一个 API 连接到 HID 接口扫描仪以读取条形码,我正在使用 NodeJS 调用 node-hid 的库,该库允许连接到接口 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 报告。它们在第 10 章“Keyboard/Keypad 页面 (0x07)”的 Universal Serial Bus HID Usage Tables 文档中进行了描述。每个报告的格式取决于报告描述符,但几乎总是: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
.
.
.
...等等。
您可以使用磁条 npm 包并使用它的 parse_card 方法获取 json 格式的数据。
const parser = require('mag-stripe');
device.on('data', function(data) {
let result = parser.parse_card(data.toString());
console.log("data ===> ",result)
})