Как я знаю, передает ли последовательный порт на самом деле данные, не открывая устройство?

Можно попробовать Ctrl+L. Это очищает и/или перерисовывает терминальный экран, в зависимости от программы.

10
23.05.2017, 15:40
2 ответа

RS232 не имеет никакого "кабельного индикатора" присутствия никакого вида. Вы просто получаете передачу или метаданные (управление) сигналы через, или Вы не делаете - это - все, что Вы знаете. При получении входящего сигнала (CTS|DSR|CD), Вы знаете, что кабель соединен. Если Вы не получаете входящего сигнала, состояние кабеля неопределенно и нет никакого способа определить, включается ли это без дополнительных аппаратных решений - или выполнение некоторого обмена с удаленным устройством.

Обычный подход выполняет некоторые "активные" передачи (даже просто метаданные - например, на мгновение установите DTR и ожидайте CTS), но если дисциплина протокола, используемого программным обеспечением в двух концах кабеля, запрещает такой неактивный обмен, Вы в значительной степени застреваете с использованием паяльника для продолжения.

То, что Вы могли бы попробовать, является некоторым дополнительным "демоном", который настраивает канал, передавая данные между Вашим программным обеспечением и физическим устройством (на обоих концах), инкапсулируя его - и выполняющие "проверки соединения", если канал неактивен.

Позвольте мне добавить одно довольно общее решение: если Ваше устройство конечной точки не использует аппаратное управление, можно закоротить DTR с CTS в разъеме на стороне хоста и использовать 'аппаратное управление' на стороне хоста. Генерация DTR автоматически управляет CTS, включая передачу, если кабель присутствует, таким образом, передача незатронута. Между тем, с отсутствующим кабелем, система будет реагировать на отсутствие CTS способом, соответствующим этому событию, например, генерации тайм-аута или приостановке передачи, пока кабель не будет включен.

5
27.01.2020, 20:03
  • 1
    Вещью "демона" является умная мысль. Однако я не собираюсь реализовывать его, так как я боюсь, что это станет источником ошибок устойчивости. Я буду придерживаться сигналов считывания от/proc и просто указания на присутствие или отсутствие входящих/исходящих сигналов. Это достаточно для меня. –  Peter Kovac 29.11.2013, 10:43
  • 2
    Это похоже на кошку Schrodinger. en.wikipedia.org/wiki/Schr%C3%B6dinger%27s_cat –  Ufoguy 26.01.2014, 09:24

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

0
27.01.2020, 20:03

Теги

Похожие вопросы