Как обнаружить разрыв соединения последовательного порта с javax.comm?
Когда соединение SerialPorts (RS232) прерывается / отключается, как я могу обнаружить его и сообщить об этом пользователю?
Как может случиться в любой момент, я полагаю, что я должен использовать отдельный поток.
Мой тип подключения: отправить MSG - получить MSG
2 ответа
RS232 не обнаруживает "состояние" физического соединения. Поэтому я думаю, что невозможно получить событие напрямую в случае подключения / отключения. Вероятно, единственный способ - это отправить что-то и определить, отсутствует ли ответ (или слышно, или что-то в этом роде...).
Насколько вы контролируете оборудование или удаленное устройство? Возможно, вы сможете что-то сделать с помощью линий управления потоком: (то есть, если вы не используете управление потоком RTS/CTS, но вы можете настроить целевое устройство на утверждение / отключение CTS, вы можете обнаружить изменение в CTS, когда устройство отключено.) Но будьте осторожны; это может нормально работать на одном оборудовании и не работать на другом из-за различий в оборудовании. В общем случае я согласен с @MrD выше, что наиболее надежным / переносимым решением является реализация некоторого обмена мгновенными сообщениями (вы отправляете сообщение, ожидаете ответа, как PING TCP/IP) и генерируете событие "отключение" если вы не получите ответ в течение некоторого времени ожидания.