Последовательная связь Java в Windows - PullRequest
30 голосов
/ 05 ноября 2008

Я искал Java API, который может взаимодействовать с последовательными устройствами в Windows / Win32, но многие из API, которые я проверял, либо для Linux, либо слишком устарели, либо просто плохо критиковались.

Может ли кто-нибудь порекомендовать мне один, который он попробовал или знает о том, что легко реализовать в Windows XP?

Ответы [ 5 ]

16 голосов
/ 05 ноября 2008

Я начал искать то же самое пару недель назад, и до сих пор очень доволен мультиплатформенной библиотекой RXTX . Работает с любыми Windows, Linux и OS X. Имеет очень простой и понятный API.

edit: RXTX также с открытым исходным кодом.

8 голосов
/ 05 ноября 2008

Без оговорок, я рекомендую Последовательный порт Java от serialio.com; У меня были значительные проблемы со стабильностью в последовательном пакете Sun, IBM и RxTx. SerialPort стабильно работает 24 часа в сутки, 7 дней в неделю.

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

5 голосов
/ 16 мая 2016

Я использую PureJavaComm в течение последних пяти лет или около того. Он активно поддерживается и является чистой реализацией Java (через JNA). RXTX подвел меня из-за нехватки обслуживания и многочисленных тонких проблем.

3 голосов
/ 10 февраля 2012

Java славится своей нестабильной последовательной поддержкой ввода-вывода. На предыдущей работе мы попробовали и RXTX, и SerialIO для приложения, которое передавало данные со скоростью 56 кбит / с с сервоконтроллера Teknic, и обнаружило, что они довольно сильно сжигают процессор. Возможно, для приложений, которым не требуется непрерывная потоковая передача из последовательного порта, обе эти библиотеки хороши, но мы не считаем, что потоковый ввод-вывод из последовательного порта должен потреблять устойчивые 15-30% ЦП на машина, когда она очень нужна для других потоков в JVM, которые должны реагировать.

Вместо этого мы создали сервер на C ++, который будет считывать поток данных из последовательного порта на сервоприводе, преобразовывать / пакетировать его и отправлять в наше приложение Java в формате XML через сокетное соединение. Загрузка процессора на сервере последовательного ввода-вывода в C ++? Едва вкрадывается в 1% в худшем случае.

Есть определенные вещи, которые Java хорошо выполняет - последовательный ввод-вывод, на мой взгляд, не входит в их число, в зависимости от типа приложения ...

В конечном счете, вы должны взять даже то, что я сказал, с небольшим количеством соли, и попробовать оба, RXTX и SerialIO (что очень дешево, например, около $ 50 или около того для java-версии), и если они отвечают вашим потребностям, соглашайтесь , Лично я бы придерживался SerialIO, потому что он поддерживается и активно работает. RXTX, не так много.

2 голосов
/ 28 сентября 2015

Я написал библиотеку Java с открытым исходным кодом, потому что ни одна из существующих не соответствует моим потребностям (устаревшая, закрытая, трудно модифицируемая, необслуживаемая, ...).

Он называется JSerial, имеет лицензию MIT, и вы можете узнать больше здесь: https://github.com/thibautd/JSerial!

В настоящее время поддерживается только Windows, но у меня есть планы по поддержке Linux. Если вам нужно, вы можете легко изменить исходную часть с помощью последней версии Visual Studio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...