Стабильная альтернатива RXTX
После использования RXTX в ряде различных проектов, я столкнулся с множеством неприятных несоответствий и проблем, которые, похоже, можно отнести к ошибкам в библиотеке. Я наблюдал такие проблемы, как взаимные блокировки, условия гонки и потоки мониторов внутри библиотеки RXTX, которые остаются открытыми и мешают завершению программы, даже несмотря на то, что все используемые порты были закрыты! Обновление до последней "нестабильной" версии немного помогло, но всё равно она далека от надежности, и активность над проектом, похоже, в настоящее время довольно низкая.
Однако поиск бесплатных кросс-платформенных альтернатив RXTX не дает много результатов.
Есть ли какая-то другая библиотека, которую кто-то пробовал с большим успехом? Мне не нужна поддержка параллельных портов, только последовательные, и она не обязательно должна быть совместима с RXTX или API javax.comm
.
4 ответ(ов)
Одной из проблем, с которой я столкнулся при использовании RXTX, была задержка при закрытии порта. Проверяя конфигурацию порта с помощью setserial, я обнаружил параметр closing_delay=3000. Это означает, что порт закрывается через 3 секунды после вызова метода close(). Попытка изменить значение closing_delay на любое другое игнорируется библиотекой RXTX, которая настоятельно требует задержку в 3 секунды.
В результате библиотека JSSC показала себя с хорошей стороны и удовлетворила наши требования.
Библиотека Serialio стоит $49 за платформу/разработчика, что предоставляет неограниченное распределение в неограниченном количестве приложений, так что это не так уж и дорого. Библиотека для Mac была стабильной и надежной для нас в приложении с невысокой нагрузкой, а доступность и совместимость были на высоком уровне на различных платформах Mac и версиях OS/X.
Вы используете socat, настроенный для обслуживания сокета для последовательного порта. Недостаток в том, что такие параметры как скорость передачи (baud rate) задаются при вызове socat, и их нельзя легко изменить из вашей программы. С другой стороны, у вас есть возможность подключаться через сеть, достаточно лишь поменять IP-адрес для подключения.
jSerialComm действительно хорош! Это библиотека для работы с последовательными портами в Java, которая обеспечивает простой и удобный интерфейс для взаимодействия с устройствами через COM-порты. Она поддерживает множество платформ и имеет активное сообщество.
Вы можете ознакомиться с документацией и примерами использования на официальной странице проекта на GitHub. Также полезна вики-страница, где вы найдете дополнительные ресурсы и информацию по установке и настройке библиотеки.
Инициализация ArrayList в одну строчку
Почему нет ConcurrentHashSet, если есть ConcurrentHashMap?
Как объявить массив в одну строку?
Загрузка JDK Java на Linux через wget приводит к отображению страницы лицензии вместо установки
Создание репозитория Spring без сущности