Как Loopback Test последовательного порта работает внутри или снизу? - PullRequest
0 голосов
/ 26 апреля 2020

При выполнении теста последовательной петли на USB-порту (предположим, COM1) с использованием Hyperterminal или любого другого последовательного терминала (например, PuTTY), вы можете убедиться, что тест пройден, если на терминале отображается то, что вы печатаете на клавиатуре (хотя это не для всех персонажей).

Мой вопрос: что происходит внизу? Итак, клавиатура отправляет данные на свой USB-порт COM2 (предположим, что он там подключен): что заставляет порт COM1 повторно отправлять и получать данные, которые, как я полагаю, являются теми же данными, которые отправляются клавиатурой, а затем отображаются на терминале?

Получены ли данные с клавиатуры на COM2 и перенаправлены ли они аппаратно на все другие порты USB, поэтому COM1 (адаптер) каким-то образом получает их изнутри, затем отправляет и получает обратно?

На самом деле, я ' Я использую ноутбук, поэтому здесь используется один порт для адаптера Serial / USB (я использую модуль FTDI), а не два порта, как я только что пытался показать пример.

Ответы [ 2 ]

2 голосов
/ 01 мая 2020

Более короткий ответ @Justme на ElectricalEngineering

Программа терминала получает нажатия клавиш и отправляет эти байты ASCII на COM-порт. Если ваш COM-порт имеет TX, подключенный к RX внешним проводом, COM-порт получит данные, которые были отправлены по TX-проводу. Полученные данные из COM-порта отправляются в вашу терминальную программу, которая печатает их на экране, если это печатный символ ASCII.

По сути, это то же самое, что отправлять почту себе и находить ее в отправляется на ваш почтовый ящик. Либо электронная почта, либо обычная почта.

О, а USB-клавиатуры не являются COM-портами.

2 голосов
/ 01 мая 2020

Вопрос довольно широкий, но я попробую:

Подключаемые порты 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», чтобы он не отображался эхом - вы увидите вывод только в том окне, которое вы не активировали при наборе текста. Затем припаяйте другой разъем к петле кабель / штекер и подключите его к другому «снифферу» (который только слушает, но не передает сам): здесь вы можете прочитать все, что фактически передается через линию обратной связи.

...