Как получить доступ к портам USB в java
Я пытаюсь написать приложение Java, которое обращается к портам USB для чтения и записи на устройство, подключенное через USB. Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, что именно использовать в java, чтобы делать такую вещь. Я искал в Интернете и нашел что-то под названием JUSB
, но все сообщения выглядят довольно старыми.
В настоящее время я использую библиотеки RXTX
, но иногда сталкиваюсь с некоторой ошибкой синхронизации. Когда я использую С# для выполнения эквивалента, он требует гораздо меньше кода, и я не сталкиваюсь с какой-либо одной ошибкой синхронизации.
Мой вопрос: есть ли что-нибудь встроенное в последнюю версию JRE, которую я могу использовать для доступа к портам usb (это так же просто, как эквивалентный код С#)?
Ответы
Ответ 1
Ничего не эквивалентно поддержке С# USB в Java. Как jUSB, так и Java-USB сильно устарели и, вероятно, непригодны для любой серьезной разработки приложений.
Если вы хотите внедрить кросс-платформенное приложение USB, действительно лучше всего написать абстрактный интерфейс JNI, который говорит с Linux, Mac и Windows, которые вам придется писать самостоятельно. Я бы посмотрел LibUSB для работы с Mac и Linux. Windows, как вы видели, довольно проста. Я только что закончил годичный проект, который сделал именно это, и, к сожалению, это единственное серьезное кросс-платформенное решение. Если вам не нужно реализовывать в Windows и ваши потребности ограничены, вы можете пройти с одной из старых Java-библиотек (jUSB или Java-USB). Все, что требуется для развертывания на Win32/Win64, будет иметь собственный компонент.
Ответ 2
Используется usb4java в течение года на cross platfom (Linux и Windows), и он отлично работает.
См:
http://usb4java.org/
Они очень активны и имеют очень хороший USB-интерфейс javax.
Ответ 3
Смотрите jUSB или usb4java библиотеки.
Ответ 4
Возможно, вы захотите взглянуть на usb4java - http://usb4java.org/index.html, он, похоже, поддерживает Windows, Linux и Mac OS и, по-видимому, разумно текущий во время публикации. К сожалению, под LGPL, возможно, не подходит для коммерческого развития.
Ответ 5
API связи Java. Это должно обеспечить аналогичную функциональность для пространства имен С# System.IO.Ports.
Ответ 6
Если вы находитесь на Mac, доступ к USB можно получить в каталоге /Volumes/.
Пример:
Вы хотите записать файл в "Диск", поэтому путь к файлу будет следующим:
/Volumes/Drive/file.whatever
Не уверен, как это происходит на других платформах, но это самый простой способ, который я нашел на Mac