Я нашел хороший Q/A здесь, на моей проблеме, но не смог найти правильный.Java swt KeyListener «решение» штрих-код чтения
У меня есть barcode reader, который считывает штрих-код и отправляет отсканированный код в качестве ввода с клавиатуры. Это нормально, я могу поймать вход легко
browser.addKeyListener(new KeyAdapter() {
@Override public void keyPressed(KeyEvent e) {
if(e.keyCode >=48 && e.keyCode <=57) {
System.out.println("number caught");
}
}
});
Но у меня будет больше входов в моем приложении, поэтому мне нужно знать, если он посылает считыватель штрих-кода или с помощью клавиатуры. Я думаю, что это может быть достигнуто добавлением некоторого таймера в код, который проверяет, сколько времени занимает некоторая «последовательность» чтения.
Я просто не могу понять это (я имею в виду логику за ним), мне не хватает части логики.
- Пользователь печатает некоторую информацию, (альфа-цифровой)
- ПОСТОНАВЛЯЕТ пользователя использовать считыватель штрих-кодов для чтения штрих-кода
Я попытался таймера, например if(System.currentTimeMillis() - lastPressProcessed ??? 500) {
после KeyListener срабатывает, но я думаю, что мне не хватает что нибудь.
Sidenote: USB штрих-кода считывает код быстро, так что нажатие клавиш эмулированную очень быстро EST весь штрих-код записывается примерно 1 секунду + переносная /r/n
(также enter
нажата).
sidenote2: штрих-коды будут отличаться по длине, так что я не могу читать только некоторые длины в короткое время и решить, кастрированный баран это пользовательский ввод или ввод штрих-кода (макс числа чтения 13 + enter
).
sidenote3: У меня нет поля ввода для штрих-кода. Я пытаюсь запустить его на «фон».
Я ищу логические/псевдокодовые предложения по теме.
связанные темы, которые действительно близки к шахте here и here
Спасибо.
редактировать
После глубокого учил я узнал, решение, которое я буду держать эту Q здесь только для других пользователей, которые могли бы найти это использовать.
решение --moved ответить + отредактирован
Вы можете отправить решение в качестве ответа и выбрать его, если оно решит вашу проблему. Однако я не думаю, что ваш код делает то, что вы думаете. Вы говорите, что «весь штрих-код записывается примерно через 1 секунду», но ваш код позволяет пройти 1 секунду между двумя нажатиями клавиш и по-прежнему обрабатывает вход в качестве входа сканера! «У меня нет поля ввода для штрих-кода», есть ли у вас другие поля ввода, и вы пытаетесь предотвратить сканирование данных в эти поля? – Enrico
Всякий раз, когда/r/n передается в программный цикл, «закрывается», считывается штрих-код. Я изменил время на 200 мс, меня беспокоило системное «отставание». Я думаю, что этот код отвечает моим потребностям, я знаю, что он не идеален, но в этом вопросе я обновляю свое решение, потому что внес некоторые изменения. Я знаю, что могу отправлять ответы, но я должен ждать 2 (1?) Дня, чтобы принять его. Не будет ввода Java, но HTML один. Программа Java предназначена для чтения штрих-кодов и отправки их на веб-страницу. – Kyslik
Также я не беспокоюсь о смешивании ввода данных с помощью штрих-кодов. В режиме «редактирования» сканер штрих-кода будет «выключен» (в программном обеспечении). Пожалуйста, сделайте больше предложений, если вы считаете, что это необходимо. – Kyslik