Как проанализировать ввод данных с карты с магнитной полосой в текстовое поле Java Swing? - PullRequest
2 голосов
/ 27 сентября 2011

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

Мой вопрос, есть ли способ захватить отсканированный текст в текстовое поле и проанализировать его до того, как он отобразится в текстовом поле?

Мой ридер / сканер относится к типу эмуляции клавиатуры, поэтому каждый символ, закодированный на полосе, напечатан в текстовом поле. Я думаю, что решение (но лучше ли это?) Было бы перехватывать каждое нажатие клавиши (эмулируемое считывающим устройством с магнитной полосой), сохранять их в буфере и отображать пустой символ до конца прочитанной строки. После прочтения данных конца карты я могу проанализировать и отобразить идентификационную часть идентификатора. Проблема в том ... как вы узнаете, что это конец строки данных карты, если они вводятся в виде отдельного нажатия клавиши символа?

Ответы [ 2 ]

2 голосов
/ 27 сентября 2011

Ответом на ваш первый вопрос является установка DocumentFilter для документа в текстовом поле.

.. откуда вы знаете, что это конец строки данных карты, если они получают вводится как отдельное нажатие клавиши?

Ваш MSR наверняка испустит START_STRING и END_OF_LINE_STRING в виде комбинации некоторых предопределенных символов. Прочитайте спецификацию данных устройства MSR. Как только вы это сделаете, вы можете реализовать insertString фильтра, похожего на этот псевдокод

if str == START_CHARACTER
    then clear buffer

if str == EOL_CHARACTER
    then parse and do super.insertString

else
    append string to buffer

Опять же, логика разбора может быть реализована с использованием спецификации данных MSR.

(MSR = считыватель магнитных полос)

2 голосов
/ 27 сентября 2011

Вы должны иметь возможность использовать Document Filter для перехвата текста, когда он добавляется в Документ JTextField. Затем, когда вы получите символ конца строки, вы можете проанализировать текст и вставить его в текстовое поле.

...