Обновление списка USB-устройств - PullRequest
4 голосов
/ 29 марта 2012

Я хочу создать модуль, который автоматически обновляет список USB-устройств (не только запоминающее устройство). Теперь он работает очень грубо - у него есть дополнительный поток, который через 1 секунду обновляет список устройств. Но, возможно, вы знаете, как обрабатывать некоторые события плагинов, которые генерируют ОС (например, Windows XP и выше), или другим способом упростить этот процесс. Спасибо за ваше время!

1 Ответ

5 голосов
/ 02 апреля 2012

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

Поддержка, которую вы ищете , была реализована еще в 2005 году как JSR-80, и, кажется, продолжает жить,все великие проекты, которые превысили свою коммерческую поддержку, как javax-usb на SourceForge .Обратите внимание, что в их игрушечном примере (в javax-usb-example/src/ShowTopology.java) их предпочтительная модель все еще основана на опросе.

Однако не все потеряно!В файле свойств для javax.usb мы находим это:

# Если вместо ожидания уведомления о горячей замене следует использовать опрос.

# НекоторыеВерсии ядра содержат ошибку, и не обновляют узлы устройства до тех пор, пока через много секунд после пробуждения потоков не ожидается файл устройств.Если вы не получаете события горячего подключения в системе с умеренной или высокой нагрузкой, используйте опрос.

# Обратите внимание, что, поскольку новое (ошибочное?) Поведение ядра нарушает javax.usb, по умолчанию используется значение true!

# Если вы знаете, что ваше ядро ​​не сломано, вы можете установить для него значение false.

# com.ibm.jusb.os.linux.LinuxUsbServices.topologyUpdateUsePolling = true

А в javax-usb/src/javax/usb/event/UsbServicesListener.java мы видим модель для настройки прослушивателя событий USB, которую можно использовать, когда устройство подключено или отключено от системы.Внешне не дано никакой документации о том, работает ли это , однако , а самим документам в основном 8 лет.

Поэтому разумно предположить, что хотя поддержка теоретически существует, он отстает, устарел и остро нуждается в обновлении сообществом.Это то, что может помочь исправить это прекрасное сообщество в SO, поэтому я начну закрывать с , указывая непосредственно на сам проект.

Пока, пока не появится улучшенное оборудование илиПоддержка горячего подключения существует, опрос все еще является лучшим решением.

( Дополнительная эталонная реализация javax-usb)

...