node.js USB(hid)条形码扫描器读取缓冲区

1 usb buffer hid barcode-scanner node.js

我正在使用node.js从条形码扫描仪中读取数据.这是我的代码:

var HID = require('node-hid');
var usb = require('usb');

// Honeywell Scanner
var vid = 0xc2e;
var pid = 0xbe1;

var d = new HID.HID(vid, pid);

d.on("data", function (data) {

console.log(data);

});
d.on("error", function (error) {
console.log(error);
d.close();
});
Run Code Online (Sandbox Code Playgroud)

我的问题是,我得到的缓冲区看起来像<Buffer 00 00 00 00 00 00 00 00>.扫描条形码(例如ID为12的条形码)后,控制台会返回类似的内容

<Buffer 00 00 53 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 53 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 1f 00 00 00 00 00>
Run Code Online (Sandbox Code Playgroud)

如何将此Buffer输出转换为可读字符串?在那种情况下,它将是12.

谢谢你的帮助!

Jos*_*cia 6

我想你想要做的是解码你的data缓冲区.

要解码缓冲区,只需使用内置的.toString()方法,传入字符编码即可解码为:

data.toString('hex'); //<-- Decodes to hexadecimal
data.toString('base64'); //<-- Decodes to base64
Run Code Online (Sandbox Code Playgroud)

如果你没有传递任何东西toString,utf8将是默认值.


编辑

如果您想知道Node当前支持哪些字符编码(除了hex,base64utf8之外),请访问官方文档.

  • @JoseLopezGarcia 很棒的提示!应该标记为答案.. 快速问题,当控制台记录 data.toString() 时,我得到随机方块以及条形码的值,例如 1234 知道这是什么吗? (3认同)