У меня есть проект, в который вход будет поступать из нескольких периферийных устройств (в данном случае, сканеров штрих-кодов), и мне нужно будет знать, с какого сканера штрих-кода поступает вход, но все, что я нашел когда исследование этого происходило из-за USB-накопителя. Я использую Java на малине Pi 2.Обнаружение, из которого поступает вход USB-порта
ответ
Я предполагаю, что ваше приложение будет делать конкретные вещи с данными конкретных сканеров штрих-кода, то есть сканер 1 подключен к кассовому аппарату 1 и сканеру2 для регистрации 2 и т. Д. Далее я предполагаю, что вы используете стандартное оборудование сканера, которое идентифицирует систему Linux как клавиатуру HID .
В современных Linux-операционных системах, таких как USB-устройства Raspbian, регистрируются как узлы устройств в /dev/input/by-id
. Примером клавиатуры, подключенной к моему Pi, является: /dev/input/by-id/usb-0130_0005-event-kbd
.
Узлы устройств Linux HID позволяют вам непосредственно читать их так же, как вы читали бы из файла. Это означает, что вы можете сделать что-то вроде следующего, чтобы убедиться, что ваша программа Java читает от конкретного сканера штрих-кода только:
DataInputStream in = new DataInputStream(
new FileInputStream("/dev/input/by-id/usb-0130_0005-event-kbd"));
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while((line = reader.readLine()) != null) {
// evaluate the EAN code which is now in line
}
предположение, что ваш сканер, как наша отправить возврат каретки/перевод строки после каждого успешно отсканированы код.
Мы используем аналогичный код в одном из наших приложений, чтобы убедиться, что наши пользователи не случайно сканируют коды EAN в других полях, таких как имена и поля описания. В нашем приложении сканеры штрих-кода добавляют элементы в список элементов, а ввод с клавиатуры используется исключительно для других пользователей.
При запуске приложения в методе main
мы используем код, похожий на этот код, чтобы удостовериться, что клавиатура и сканеры штрих-кода различаются.
public static void main(String args[]) {
String keyboardInput = args[0];
String barcodeInput = args[1];
// see code above how to read from the particular devices
}
Что касается запуска приложения мы используем Linux инструменты командной строки, чтобы определить, какие устройства узлы относятся к сканеру штрих-кодов и которые к клавиатуре. В основном это комбинация lsusb
и набор правил Udev, которые выполняются при подключении USB-устройства к аппарату. Однако это не соответствует вашему вопросу.
- 1. обнаружение, из которого распознаватель движется вперед
- 2. tagit: Вход не поступает как массив
- 3. Получить идентификатор процесса выполнения команды, выход которого поступает
- 4. Обнаружение внутри которого iframe выполняет скрипт
- 5. Обнаружение, из которого ячеек, UIButton был нажат в UITableView
- 6. Обнаружение, символ которого был заменен на Swift
- 7. Где запрос поступает из (php)
- 8. SaltStack: Обратное проектирование, где файл поступает из
- 9. jQueryUI Sortable и connectWith - как распознать список, из которого поступает элемент?
- 10. C++ обнаружение, если вход Int или String
- 11. Обнаружение удара Вход в текстовый ввод
- 12. Chrome - Обнаружение «Вход в аккаунт детали устарели»
- 13. Когда вход поступает из трубы, выполняется ли STDIN.read до тех пор, пока не будет достигнута EOF?
- 14. Есть ли способ узнать, поступает ли вход в программу из файла или нет?
- 15. Экспресс обнаруживает, если запрос поступает из поддомена?
- 16. Где эта информация о стиле поступает из
- 17. Где пользовательский ввод поступает из архитектуры MVC?
- 18. Уведомление не поступает из службы Android
- 19. Обнаруживать, если запрос поступает из антивируса
- 20. Вход в ui - выберите значение, которого нет в списке
- 21. алгоритм - Поиск вход, для которого функция возвращает определенное значение
- 22. Найти вход которого значение атрибута название [somedigit] в нем
- 23. Отбросив вход из гнезда
- 24. set variable как вход, индекс родителя которого соответствует другой переменной
- 25. Удалить виртуальный вызов поступает
- 26. Имея вход, у которого уже есть текст в C++
- 27. Получить дополнительный вход, имя которого нет в классе модели
- 28. Обнаружение функционального алгоритма из изменчивого
- 29. Обнаружение http-запроса из мобильного приложения
- 30. Создайте представление, из которого выводится содержимое таблицы
Litle bit меньше информации, которую вы предоставляете, но я думаю, что вы используете hidapi. Если так, посмотрите в этом классе: HIDDeviceInfo есть свойство interface_number, которое должно быть тем, что вы ищете. –
в противном случае попытайтесь получить результат lsusb – HRgiger