@magliullin

Работа usb rfid считывателя в режиме эмуляции клавиатуры в web приложении?

Здравствуйте интересует концептуальный подход к решению задачи работы usb-rfid считывателя в режиме эмуляции клавиатуры в веб приложении, суть в том что данные от касания карты с rfid считывателем поступают в любое активное текстовое поле в формате набора простых цифр в количестве от 10.

Задача: в том чтобы вне зависимости от фокуса на каком-либо текстовом поле вычленять данные код id карты и отправлять для последующей обработки.
Также стоит задача не помешать пользовательскому вводу в любом поле.

Замечание, что информация получаемая от считывателя имеет несколько отличительных свойств от пользовательского ввода : время вывода данных между 1 и последующей цифрой занимает не более 18 миллисекунд. т.е человек быстрее набрать не сможет.
Спасибо.
  • Вопрос задан
  • 708 просмотров
Пригласить эксперта
Ответы на вопрос 2
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Если брать в расчет только скорость ввода (не более 20 мс), то как-то так:
var RFIDTime = false;
var RFIDInput = '';
$(document).keyup(function(e){
   if(!RFIDTime) RFIDInput += String.fromCharCode(e.which); RFIDTime = e.timeStamp;
   
   if(RFIDTime){
     if(e.timeStamp - RFIDTime < 20){
       RFIDInput += String.fromCharCode(e.which);
       RFIDTime = e.timeStamp;
       if(RFIDInput.length == 10){
         console.log('RFID detected, value: ' + RFIDInput);
       }
     } else {
       RFIDInput = '';
       RFIDTime = false;
     }
   }
});


Но если очень быстро вводить что-то на клавиатуре (бить по ней) - то это тоже определится как RFID. В таком случае на бэкэнде стоит сделать проверку введенных данных.

Если же какой-то input сфокусирован - то данные будут введены в него.
Этого не получится избежать, разве что сохраняя предыдущее значение в переменную, и возвращая его обратно, если сервер вернул в качестве valid ответ true (RFID прошел).
Ответ написан
Марат, добрый день! Подскажите, пожалуйста, как решили данный вопрос, что из этого вышло?
Сейчас тоже встрял на этом моменте, но решений пока не вижу...
Буду очень рад, если сможете ответить мне..
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы