Использование библиотеки обнаружения сканера jQuery с метками RFID - PullRequest
0 голосов
/ 14 марта 2019

Я использовал библиотеку сканера штрих-кода здесь с успехом для считывания штрих-кода. Однако я пытаюсь включить сканирование RFID-меток в свое веб-приложение, и у меня возникли проблемы с настройкой кода для правильной работы - я думаю, что мне не хватает чего-то простого.

Как правило, при сканировании меток RFID сканер быстро передает много меток, каждая из которых заканчивается символом 13 (возврат). Если я просто сканирую одну метку RFID, она ведет себя, как и ожидалось, - но если я держу сканер RFID над партией меток, она очень быстро читает каждую и передает данные с возвращаемым символом (13) между каждой меткой.

Я пытаюсь выяснить, как собрать все это, прежде чем передавать массив этих тегов на сервер для обработки. Я создал новый массив и поместил команду .push () для каждого тега, и он правильно строит массив, когда помещается в onComplete (протестировано с журналом оповещений / консоли). Проблема в том, что он оповещает / регистрирует каждый раз, когда сканирование достигает возврата, поэтому, если имеется 10 RFID-меток, он предупреждает 10 раз.

Я пытаюсь заставить его сделать один вызов на сервер после того, как он обнаружит, что все теги были прочитаны. Я попытался удалить и поработать с настройками endChar, но безуспешно, и мне не удалось найти способ заставить его собрать несколько результатов в пакете, прежде чем действовать на них (отправляя их все на сервер сразу).

Кто-нибудь знает, как мне этого добиться? Буду вечно благодарен. Пример кода ниже, но он довольно шаблонный с добавлением текущего push-кода ScanBarcodes.

var currentScanBarcodes = new Array();
$(document).scannerDetection({
        timeBeforeScanTest: 200, // wait for the next character for upto 200ms
        startChar: [120], // Prefix character for the cabled scanner (OPL6845R)
        //endChar: [13], // be sure the scan is complete if key 13 (enter) is detected
        avgTimeByChar: 40, // it's not a barcode if a character takes longer than 40ms
        onKeyDetect: function (event) { console.log(event.which); return false; },
        onComplete: function (barcode, qty) {
            currentScanBarcodes.push(barcode);
            $.ajax({
                url: '/URLtoProcessResults?code=' + barcode
            })
                .done(function (data) {
                alert(currentScanBarcodes);
            });
        });
});
...