串行端口环回测试在内部/底层如何工作?

串行端口环回测试在内部/底层如何工作?

当使用超级终端在 USB 端口(假设为 COM1)上进行串行环回测试时,如果您在键盘上键入的内容显示在终端上(尽管它不是所有字符),则可以验证测试是否通过,我的问题是:下面发生了什么?所以键盘(假设它在 USB COM2 上)将数据发送到它的 USB 端口 COM2,是什么让 COM1 端口重新发送和接收数据,我假设这是键盘发送的相同数据,然后显示在终端上,键盘数据是否在 COM2 上接收并由硬件重定向到所有其他 USB 端口,所以 COM1 通过某种我仍然不知道的方式在内部接收它,将其发送出去并接收回来?

编辑:实际上,我正在使用一台笔记本电脑,所以也许这会改变问题,所以这里用于串行/USB 适配器的一个端口(我正在使用 FTDI 模块),而不是两个端口,我试图展示一个例子。

答案1

由 @HelpingHand 在 SO 上回答这里

问题很广泛,但我尝试一下:

串口您连接的端口是典型的 PC 实现的 RS-232 串行接口。环回配置正如名称所暗示的那样: 信号线在 RS-232 中,传输数据线 (TxD) 是 回环 到同一主机端口的接收数据线 (RxD)。

您还可以使用最小配置执行类似(但更简单)的测试,其中环回只是直接 “回形针测试”回送 TxD/RxD 线之间同一个 COM 端口. 只需很少的抽象,逻辑从 PC 的一个 COM 端口构建的环回同一台 PC 上的另一个 COM 端口其共同特点是,你可以在同一个显示屏上看到你自己的传输被返回。

这种测试之所以能够在示例的串行端口上轻松进行,其重要特点是接口非常低级,以至于中间没有连接层(或硬件功能),接收方无法注意到信号不是由外部对等主机发布的,而是来自本地主机。

两个 COM 端口(您的 PC 和 PC 上的适配器)之间的连接构成了环回测试装置的核心部分。您的问题表明您对正在发生的事情感兴趣超过串行连接本身,所以请继续阅读下文...


从键盘到屏幕,涉及各种(硬件和)软件组件。这些组件的细节取决于您实际的 PC 安装,但其某些属性可以独立于您拥有的组件进行描述。例如,您是否有两个原生 COM 端口或一个原生端口加上另一个在 USB 端口上模拟的端口的问题与串行线路上实际发生的情况无关(因为适配器的工作是确保另一端与原生 COM 端口兼容)。

在电脑上,运行 终端仿真程序,通常用于与某种外部对等体进行通信,向/从 全双工 连接。虽然这不是必需的,但典型的通信模式是 ASCII 数据以乒乓方案交换,其中一方担任客户端/主角色,另一方实现接收请求并发出响应的服务器/从属角色。然后(通常)服务器端可以由运行交互式 shell 的 Linux/Unix PC 实现,该 shell 通过串行线路而不是本机(非模拟)驱动控制台终端由键盘和显示屏组成。

现在想象一下,你已经切断了外部对等端,安装了环回,并且你正在监听自己。然后你通过键盘输入的所有内容都将

  • 被 PC 及其操作系统检测到,操作系统管理击键并将相应事件传递给活动进程(终端仿真器、发送器角色)
  • 由终端仿真器发出串行传输并传送到串行线(再次通过操作系统及其驱动程序)
  • 通过串行线运行,TxD --> RxD
  • 由操作系统/驱动程序在所连接的 COM 端口检测并传送到终端仿真器(接收器角色)
  • 由终端仿真器处理并发布到您的屏幕上显示(再次使用操作系统和驱动程序)。这是您查看数据传输的地方。

如果您像写的那样使用一个 USB 模拟 COM 端口,信号将通过适配器加密狗及其相应的驱动程序软件运行,而不是采用数据在本机端口采用的更简单的方式。

如果您正在运行“端口环回”(单个 COM 端口上的特殊布线),则输出文本将显示在您发布输入文本的同一终端仿真器的接收窗口中。

如果您在两个端口之间运行“主机环回”,通常需要两个正在运行的终端仿真器实例(或多个仿真器 - 例如,您也可以让超级终端与 PuTTY 对话)。您正在向一个实例键入内容,而收到的文本会显示在另一个实例上。- 好吧,加上一个扩展:通常,终端仿真器将输入文本“回显”到其本地输出部分,以便用户可以验证(并记住)先前输入并传输到底层线路的内容。由于试验环回不是终端仿真器的主要目的,因此默认配置通常是激活此回显。也就是说,您可能会看到您输入的文本在“输入”端回显(输入一次,立即读取),以及在“输出”端的窗口中回显一次(描述通过串行连接的内容)。回声部分是在你的终端仿真程序中提供的(如果它是 OSS,请自行查找其代码),已收到部分通过串行线传送。

如果您出于教育目的想要验证这一点,请尝试重新配置“INPUT”终端仿真器以使其不回显 - 您将只在键入时未激活的窗口上看到输出。然后,将另一个连接器焊接到您的环回电缆/插头上,并将其连接到另一台“嗅探器”机器(它只监听但不自行传输):在这里您可以读取通过环回线路实际传输的所有内容。

相关内容