Вопрос

У меня есть приложение, которое считывает данные с com-порта, используя javax.comm.

Проблема, с которой я сталкиваюсь, заключается в том, что если устройство, с которого я читаю, неожиданно отключается, я получаю сообщение об ошибке в консоли с надписью "WaitCommEvent:Ошибка 5"

Я осмотрелся и не могу найти никакой полезной информации по этому поводу.Я установил для всех методов notifyOn * значение true, поэтому я думаю, что должен получать все события, но я не улавливаю это.

Распечатанное сообщение об ошибке не приходит ниоткуда в моем коде, поэтому оно должно быть где-то в пакете javax.comm.Кто-нибудь может сказать мне, как обработать эту ошибку, чтобы я мог правильно закрыть com-порт при ее возникновении?

Спасибо!

Это было полезно?

Решение

ЕСЛИ кого-то это интересует, я нашел решение.Я использовал javax.comm api, но чтобы решить проблему, я заменил его rxtx api (http://rxtx.qbang.org/wiki/index.php/Main_Page).Никаких изменений кода не потребовалось, но теперь, когда устройство отключено, я получаю исключение IOException с сообщением "Базовый входной поток вернул нулевые байты".Я обрабатываю это сообщение и запускаю новую тему.В новом потоке я вызываю port.close() и port.removeEventListener() .Эти два вызова должны быть выполнены в новом потоке, иначе приложение зависнет.

Другие советы

Мы потратили много времени на то, чтобы заставить javax.comm работать, и обнаружили, что в нашем случае причиной проблем был COM-драйвер (на нескольких компьютерах с Windows 7).Если драйвер также является вашей проблемой, и вы используете Windows 7 или, возможно, Vista (и вы используете последовательный кабель Prolific / Logilink), то это может быть решением :) http://www.akosta.dk/category/technical-notes/

Надеюсь, у вас получится!

Этому вопросу почти 2 года, но, возможно, другому нужно возможное решение:

У меня была такая же проблема с java.comm:"Ждите события:Ошибка 5" Это сообщение появляется несколько раз, если COM-порт отключен, но объект SerialPort не закрыт.

Мое решение состояло в том, чтобы закрыть объект SerialPort, если чтение / запись потоков ввода-вывода SerialPort вызвали исключение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top