Еще один голос за идею jttraino . То же самое я делаю со считывателями карт и чековыми считывателями в точках продаж, где нам необходимо поддерживать раскладку клавиатуры, а также USB и RS232.
По сути, выберите короткую последовательность символов, которые вряд ли будут поступать с клавиатуры, и запрограммируйте цикл обработки сообщений, чтобы увидеть поступление этих символов. Если вы получите законченный поток символов, соответствующий вашему шаблону, вы можете декодировать оставшуюся часть ввода, пока не достигнете назначенной последовательности 'end' или пока не решите, что входящая последовательность ошибочна. Выберите строку, которую сложно или невозможно ввести с обычной клавиатуры в ваше приложение, учитывая такие вещи, как редактирование масок и поведение различных экранов.
Хорошая отправная точка - это что-то вроде тильды (~!), Поскольку эти символы вряд ли появятся в личных данных кого-либо и вряд ли когда-либо появятся вместе в тексте заметки и т. Д. :-)
Недостатком, как сказал jttraino, является то, что вам, вероятно, придется настраивать / программировать каждое устройство чтения самостоятельно. Некоторые производители делают это довольно легко - чей комплект вы используете? Magtek? Уэлч Аллин?