Отправка байтов через последовательный порт занимает более 5 минут

У моей Java-программы возникают проблемы с корректной связью через один последовательный порт. На самом деле на компьютере два последовательных порта и программа управляет двумя потоками. Каждый поток использует один отдельный последовательный порт. У одного потока возникли проблемы с отправкой через порт. Байты отправляются не после использования OutputStream.write(), а после использования метода java.io.OutputStream.flush(). И поток "зависает" от 5 до 10 минут на методе flush(). Другой поток работает так же, но не имеет абсолютно никаких проблем. Экземпляр outputstream происходит от gnu.io.CommPort.getOutputStream().

Кто-нибудь знает, почему поток не отправляет байты сразу, а только после того, как он застрял на 5 минут в методе flush(), и что мне делать по-другому?


person Nils De Winter    schedule 09.10.2013    source источник
comment
Когда вы пишете в одно и то же место, то есть в последовательный порт, ресурс может быть занят или недоступен, если вы синхронизируете потоки, чтобы получить статус канала, вы можете увидеть разницу.   -  person    schedule 09.10.2013
comment
Есть только один поток, использующий последовательный порт, и никакой другой программы. Но я обнаружил, что если другое устройство, подключенное к последовательному порту, отправляет что-то, в то время как моя программа застряла на методе flush(), она открепляет программу, которая затем отправляет свое сообщение (до получения сообщения от другого устройства)   -  person Nils De Winter    schedule 10.10.2013


Ответы (1)


Наконец-то я узнал, в чем источник проблемы. Последовательный порт неисправен. Я заменил его, и теперь он работает нормально.

person Nils De Winter    schedule 10.10.2013