Как преобразовать в строку ответ данных из метода device.on () с использованием библиотеки node-hid - PullRequest
0 голосов
/ 20 июня 2020

Мне нужно реализовать API в NodeJS, который подключается к сканеру интерфейса 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>

у кого-то есть опыт с этим. Спасибо!

1 Ответ

1 голос
/ 21 июня 2020

Коды в буфере представляют собой отчеты HID с типичной USB-клавиатуры. Они описаны в документе Таблицы использования HID универсальной последовательной шины в главе 10 «Клавиатура / страница клавиатуры (0x07)». Формат каждого отчета зависит от дескриптора отчета, но почти всегда: 1 байт модификаторов (ctrl, alt, et c), 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
.
.
.

... и так далее.

...