Как заставить Java использовать последовательный порт в Linux? - PullRequest
6 голосов
/ 12 марта 2009

Мы используем Java-приложение, которое управляет клавиатурой через последовательный порт. Это прекрасно работает на Windows с Sun Comm.jar, поставляемой DLL и файлом свойств.

Теперь мы пытаемся использовать это решение в Linux (на самом деле оно работает на различных других разновидностях linux в полевых условиях) - в режиме сервера Ubuntu.

После долгих попыток - крови, пота и почти слез мы имеем такой сценарий:

Java версия 1.4.2_17 Linux - Ubuntu Comm libs - Comm3 от Sun с указанным драйвером по умолчанию

Тест внешней связи показывает порты связи: / dev / ttyS0 и / dev / ttyS1 Но Java-приложение сообщает, что не может открыть порт / dev / ttyS1

(использование файлов RXRT приводит к недопустимым ошибкам порта)

Кто-нибудь смог использовать Java 1.4.2 в Linux для связи через последовательный порт и нашел решение, которое я мог бы применить в моем сценарии?

с благодарностью

Phill

Ответы [ 5 ]

3 голосов
/ 25 января 2015

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

Это открытый исходный код и доступен на GitHub:

j232 - Исходный код Java

libj232 - собственная библиотека j232.

Вики-страница здесь .

Обратите внимание, что это пакет и библиотека только для Linux.

2 голосов
/ 12 марта 2009

Убедитесь, что вы используете пользователя с разрешениями для доступа к последовательным портам. Некоторые дистрибутивы помещают последовательные порты в группу uucp, поэтому убедитесь, что пользователь принадлежит к этой группе.

1 голос
/ 12 марта 2009

Уже несколько лет мы используем библиотеки SerialIO для последовательной связи Java как в Windows, так и в Linux, и получаю отличные результаты (и нет, я не работаю с ними: -)):

http://serialio.com/products/serialport/serialport.php

Библиотеки не могут автоматически определять доступные последовательные порты в Linux - их необходимо настраивать вручную.

1 голос
/ 12 марта 2009

Прошло много времени с тех пор, как я это сделал. Я помню, что вы не можете просто открыть / dev / ttyS0 как файл и выполнить ввод / вывод в него.

Я помню ту же проблему с банками Sun IO.

Решение, которое я запомнил, заключалось в создании небольшой программы командной строки на C, которая передавала бы stdin на последовательный порт, а последовательный порт - на stdout. Затем я запустил эту программу из моего процесса Java. У меня нет кода, но есть много примеров в Интернете для программ c, которые пишут в последовательные порты Linux.

0 голосов
/ 13 марта 2009

Мы не сильно изменились, ничего в библиотеках не используется. но устранение использования EventListener на объекте последовательного порта устранило проблему.

Это фактически позволило нашему коду работать на linux (jre1.4.2, slackware и драйверах Suns Comm3), где это не было проблемой для windows - странно.

Phill

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