Javascript 将多行缓冲区的条形码扫描器输出转换为数组或 json

Javascript to turn Barcode scanner output of multiline buffer to array or json

早上好!

我正在尝试将 USB 条形码扫描到单个数组或更好的 JSON 对象中,但我不知道如何将这个多字符缓冲区转换为对象。

以下是来自扫描 (Zebra LS2208) 的原始 HID 流

<Buffer 00 00 24 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 23 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 22 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 22 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 23 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 26 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 20 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 23 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>

当我把它变成字符时,它的输出是这样的:

7

6

5

7

5

6

9

3

1

2

6

7

现在这些是 UPC 中的数字,但我一直很难将其转换为数组或对象,因为这些新行(包括空格)中的每一行都被视为一个新数组。

我最终希望它变成的是: [7,6,5,7,5,6,9,3,1,2,6,7] 或者

{
 "upc": "765756931267"
}

这是我使用的最基本的代码:

var KeyboardCharacters = require('node-hid-stream').KeyboardCharacters;
var characters = new KeyboardCharacters({ vendorId: 1504, productId: 4608 });

characters.on("data", function(data) {
 console.log(data);
});

有人能提供任何见解吗?会喜欢的帮助!

以防其他人遇到类似问题,我找到了解决问题的方法。

我用的USB扫描仪是Zebra LS2208,它有多种扫描模式,可以通过扫描条码来设置。在过去的一天里,我一直将它用作 USB 键盘 (HID),这意味着 UPC 中的每个数字都是不同的键 Down/Key Up,今天早上开始我。

我扫描了将其扫描模式切换为 IBM HAND-HELD USB 的条形码并尝试扫描,但我收到了代码错误。我没有更改任何代码并且设备的路径是相同的,但是为了仔细检查设备设置,我使用了以下内容,这是 node-hid 的一部分来检查我的设备设置:

var devices = HID.devices();
console.log(devices);

我注意到 vendorId 是一样的,但是 productId 已经改变了...我更新了代码中的 ID,重新扫描,瞧,一个缓冲区被输出,一个简单的 toString() 将其更改为正确的数字。

除了 Buffer 修复之外,我也停止使用继承 node-hid 的 NPM 包,我只是自己使用它并编写我需要的任何其他东西。

修复的代码片段:

// Use the serialport module to get scanner  data
var HID = require('node-hid');

// Set the device we're using for Scanning Barcodes
var device = new HID.HID('/dev/hidraw0');

// Register a scanned UPC and start the rest of the program process
device.on('data', function(data) {
    console.log('Scan prompted');
    console.log('UPC = ' + data.toString());
});