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

问题描述 投票:0回答:1

早上好!

我正在尝试将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);
});

有人能够提供任何见解吗?希望得到帮助!

javascript buffer barcode-scanner
1个回答
0
投票

如果其他人出现并遇到类似问题,我找到了解决问题的方法。

使用我使用的USB扫描仪Zebra LS2208,它具有多种扫描模式,可以通过扫描条形码进行设置。在过去的一天中,我一直将它用作USB Keyboard(HID),这表示UPC中的每个数字都是不同的Key Down / Key Up,今天早晨我才意识到。

我扫描了将条形码的扫描模式切换为IBM手持USB的条形码,然后尝试进行扫描,但是代码中出现错误。我没有更改任何代码,并且设备的路径相同,但是为了再次检查设备设置,我使用了以下内容,这是node-hid的一部分,用于检查设备设置:

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

我注意到vendorId是相同的,但是productId已更改...我更新了代码中的ID,重新扫描并确认,输出了一个Buffer和一个简单的[C0 ]将其更改为正确的数字。

除了Buffer修复程序之外,我还停止使用继承了toString()的NPM程序包,而我自己使用它并编写了我需要的其他内容。

此修补程序的代码片段:

node-hid
© www.soinside.com 2019 - 2024. All rights reserved.