Java славится своей нестабильной последовательной поддержкой ввода-вывода. На предыдущей работе мы попробовали и RXTX, и SerialIO для приложения, которое передавало данные со скоростью 56 кбит / с с сервоконтроллера Teknic, и обнаружило, что они довольно сильно сжигают процессор. Возможно, для приложений, которым не требуется непрерывная потоковая передача из последовательного порта, обе эти библиотеки хороши, но мы не считаем, что потоковый ввод-вывод из последовательного порта должен потреблять устойчивые 15-30% ЦП на машина, когда она очень нужна для других потоков в JVM, которые должны реагировать.
Вместо этого мы создали сервер на C ++, который будет считывать поток данных из последовательного порта на сервоприводе, преобразовывать / пакетировать его и отправлять в наше приложение Java в формате XML через сокетное соединение. Загрузка процессора на сервере последовательного ввода-вывода в C ++? Едва вкрадывается в 1% в худшем случае.
Есть определенные вещи, которые Java хорошо выполняет - последовательный ввод-вывод, на мой взгляд, не входит в их число, в зависимости от типа приложения ...
В конечном счете, вы должны взять даже то, что я сказал, с небольшим количеством соли, и попробовать оба, RXTX и SerialIO (что очень дешево, например, около $ 50 или около того для java-версии), и если они отвечают вашим потребностям, соглашайтесь , Лично я бы придерживался SerialIO, потому что он поддерживается и активно работает. RXTX, не так много.