Javascript для преобразования вывода сканера штрих-кода многострочного буфера в массив или json - PullRequest
0 голосов
/ 14 марта 2020

Доброе утро!

Я пытаюсь получить сканирование штрих-кода USB в один массив или, что еще лучше, объект JSON, но не могу понять, как превратить этот многосимвольный буфер в объект.

Ниже приведен исходный поток HID, полученный при сканировании (Zebra LS2208)

<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

Теперь это числа в UP C, но мне было трудно превратить это в массив или объект, потому что каждая из этих новых строк (включая пробелы) рассматривается как новый массив.

В конечном итоге я хочу, чтобы это превратилось в: [7,6,5,7,5,6,9,3,1,2,6,7] ИЛИ

{
 "upc": "765756931267"
}

Это самый базовый c код, который я использую:

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

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

Кто-нибудь может предложить какое-либо понимание? Буду признателен за помощь!

1 Ответ

0 голосов
/ 15 марта 2020

В случае, если кто-то еще приходит и сталкивается с подобной проблемой, я нашел решение своей проблемы.

Используя USB-сканер Zebra LS2208, он поставляется с несколькими режимами сканирования, которые можно настроить путем сканирования штрих-кода. За последний день я использовал его как USB-клавиатура (HID) , что означает, что каждый ди git в UP C был различным Key Down / Key Up, о котором сегодня утром рассветало меня.

Я отсканировал штрих-код, который переключил режим сканирования на IBM HAND-HELD USB , и попытался выполнить сканирование, но получил ошибку в коде. Я не изменил никакого кода, и путь к устройству был таким же, но для двойной проверки настроек устройства я использовал следующее, которое является частью node-hid для проверьте настройки моего устройства:

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

Я заметил, что vendorId был таким же, но productId изменился ... Я обновил идентификатор в коде После повторного сканирования и вуаля, один буфер был выведен, и простой toString() изменил его на правильные числа.

Помимо исправления Buffer, я также перестал использовать пакет NPM, который унаследовал node-hid , и я сам использовал его и написал все, что мне было нужно.

Фрагмент кода исправления:

// 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());
});
...