Вопрос довольно широкий, но я попробую:
Подключаемые порты COM являются типичной реализацией RS для P C. -232 последовательный интерфейс. Конфигурация с обратной связью - это то, что следует из названия: среди сигнальных линий RS-232 линия переданных данных (TxD) зациклена обратно на линию полученных данных (RxD) порта на том же хосте.
Вы также можете выполнить аналогичный (еще более простой c) тест, используя минимальную конфигурацию, где петля является просто прямой «проверкой на скрепку» петлей между линиями TxD / RxD тот же самый COM-порт . Лишь небольшая абстракция, логический шлейф, который вы строите из одного COM-порта P C на другого COM-порта в том же P C, имеет общую функцию, которую вы вы можете видеть, что ваша собственная передача возвращается на том же экране.
Важная особенность, почему такой тест легко работает на последовательном порту вашего примера, состоит в том, что интерфейс настолько низкоуровневый, что нет уровня соединения (или аппаратная функция), между которыми получатель может заметить, что сигналы не отправляются внешним одноранговым хостом, а поступают с локального хоста.
Соединение между двумя COM-портами ( вашего P C и адаптера на вашем P C) составляют основную часть схемы проверки по шлейфу. Ваш вопрос говорит о том, что вас интересует, что происходит за пределами самого последовательного соединения, поэтому, пожалуйста, продолжайте читать ниже ...
С клавиатуры на экран есть различные (аппаратные и) программные компоненты. Детали этого зависят от вашей фактической установки P C, но некоторые ее свойства могут быть описаны независимо от того, что именно у вас есть. Например, вопрос, есть ли у вас два собственных COM-порта или один собственный плюс другой, который эмулируется на USB-порту, не имеет отношения к вопросу о том, что происходит на последовательной линии на самом деле (потому что это работа адаптера, что другой сторона совместима с собственными COM-портами).
На P C вы запускаете программу эмуляции терминала , которая обычно используется для связи с каким-либо внешним узлом, передачей и получение символов в / из соединения full-duplex . Хотя в этом нет необходимости, типичный режим связи состоит в том, что данные ASCII обмениваются в схеме пинг-понга, где одна сторона выполняет роль клиент / ведущий, а другая реализует сервер / ведомый, который принимает запросы и выдает ответы. Затем (обычно) на стороне сервера может быть реализована Linux / Unix P C с интерактивной оболочкой, которая управляется через последовательную линию вместо собственного (не эмулируемого) консольного терминала состоит из клавиатуры и экрана дисплея.
Теперь представьте, что вы отключили внешний узел, установили петлю и слушаете сами. Затем все, что вы вводите через клавиатуру, будет
- обнаруживаться P C и его операционной системой, которая управляет нажатиями клавиш и доставляет соответствующие события в активный процесс (эмулятор терминала, роль передатчика). )
- выдается для последовательной передачи эмулятором терминала и доставляется в последовательную линию (снова через операционную систему и ее драйверы)
- проходит через последовательную линию, TxD -> RxD
- обнаруживается на подключенном COM-порту ОС / драйверами и доставляется в эмулятор терминала (роль получателя)
- обрабатывается эмулятором терминала и выдается для отображения на экране (с использованием ОС). и водители еще раз). Именно здесь вы просматриваете передачу данных.
Если вы используете один COM-порт с эмуляцией USB, как вы писали, сигнал проходит через адаптер адаптера и соответствующее ему программное обеспечение драйвера вместо более простого способа данные берут на родном порту.
Если вы запускаете «loopback port» (специальные кабели на одном COM-порту), выходной текст будет отображаться в окне приемника того же эмулятора терминала, где вы разместили свой входной текст.
Если вы запускаете «петлю хоста» между двумя портами, вам обычно нужны два запущенных экземпляра эмулятора терминала (или эмуляторов - вы также можете использовать Hyperterminal talk для PuTTY, например). Вы печатаете в одном экземпляре, а полученный текст появляется в другом. - Ну, плюс одно расширение: обычно, эмуляторы терминала «выводят» входной текст на свою локальную часть вывода, чтобы пользователь мог проверить (и запомнить), что ранее было введено и передано в основную строку. Поскольку экспериментирование с закольцовыванием не является основной целью эмуляторов терминала, в конфигурации по умолчанию часто используется это эхо. То есть вы, вероятно, увидите текст, который вы вводите, отраженный на стороне «INPUT» (введите его один раз, прочитайте его прямо здесь), а также один раз в окне на стороне «OUTPUT» (которое показывает, что произошло через последовательное соединение). Часть echo доставляется в вашей программе эмулятора терминала (посмотрите ее код самостоятельно, если это OSS), часть , полученная , доставляется через последовательную линию.
Если вы хотите проверить это в образовательных целях, попробуйте перенастроить эмулятор терминала «INPUT», чтобы он не отображался эхом - вы увидите вывод только в том окне, которое вы не активировали при наборе текста. Затем припаяйте другой разъем к петле кабель / штекер и подключите его к другому «снифферу» (который только слушает, но не передает сам): здесь вы можете прочитать все, что фактически передается через линию обратной связи.