Проблемы с использованием node-usb для интерпретации данных считывающего устройства магнитной полосы

У меня есть касса со считывателем магнитной полосы, и если я просто открою текстовый редактор и разложу карту, я могу получить такой результат:

ñ30283000000306_

Теперь я успешно использовал пакет npm node-usb для подключения к считывателю, и я использую этот код для получения данных от него (с помощью машинописного текста):

async findMagReader() {
    const devices = usb.getDeviceList().filter((d: usb.Device) => {
        return d.deviceDescriptor.idProduct === 9;
    });
    if (devices[0]) {
        this.listenToReader(devices[0]);
    }
}

listenToReader(d: usb.Device) {
    d.open();
    const iFace: usb.Interface = d.interface(0);

    if (iFace.isKernelDriverActive()) {
        iFace.detachKernelDriver();
    }

    iFace.claim();
    const endPoint: any = iFace.endpoints[0];

    endPoint.startPoll();
    endPoint.on('data', (data: any) => {
        console.log(data);
    });
}

Это последовательно считывается с карты как последовательность буферов, например:

<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 33 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 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 25 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 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 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 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 20 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 23 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 02 00 38 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 28 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>
<Buffer 00 00 00 00 00 00 00 00>

И если я изменю console.log(data) к console.log(data.toString()) Получаю следующее:

3



'



%



'

'

'

'

'

'



'

#

8

(

Итак, мой вопрос: как сделать так, чтобы приведенное выше значение напоминало значение, которое я получаю, если сканирую карточку в простом текстовом редакторе? Я пробовал все виды кодировок, но безуспешно.

Я также рассматривал возможность использования последовательного порта npm, а не node-usb, но, похоже, последовательный порт не принимает устройства в / dev / bus /usb.

Любая помощь будет принята с благодарностью.

0 ответов

Другие вопросы по тегам