88

DTR/DSR和RTS/CTS硬件流控有什么区别?什么时候使用每一个?为什么我们需要不止一种硬件流控制?:)

4

3 回答 3

76
  • DTR - 数据终端就绪
  • DSR - 数据集就绪
  • RTS - 请求发送
  • CTS - 清除发送

有多种做事方式,因为标准中从来没有内置任何协议。您使用您的设备实施的任何临时“标准”。

仅从名称来看,RTS/CTS 似乎是天作之合。然而,它与随着时间的推移而发展起来的需求背道而驰。这些信号是在终端批量发送一个充满数据的屏幕时创建的,但接收器可能还没有准备好,因此需要流量控制。后来问题会被逆转,因为终端无法跟上来自主机的数据,但 RTS/CTS 信号方向错误 - 接口不是正交的,并且没有相应的信号去往另一个方向。设备制造商尽其所能进行调整,包括使用 DTR 和 DSR 信号。

编辑

要添加更多细节,它是一个两级层次结构,因此“正式”两者都必须发生才能进行通信。该行为在原始 CCITT(现为 ITU-T)标准 V.28 中定义。

在此处输入图像描述

DCE 是连接终端和电话网络的调制解调器。在电话网络中是另一台设备,它分离到数据网络,例如。X.25。

调制解调器具有三种状态:已关闭、就绪(Data Set Ready为真)和已连接(Data Carrier Detect

在调制解调器连接之前,终端不能做任何事情。

当终端想要发送数据时,它会提高 RTS,调制解调器会使用 CTS 授予请求。调制解调器在其内部缓冲区已满时降低 CTS。

好怀旧!

于 2009-06-05T18:38:59.293 回答
33

它们之间的区别在于它们使用不同的引脚。说真的,就是这样。它们都存在的原因是 RTS/CTS 原本不应该是一种流量控制机制。它是用于半双工调制解调器来协调谁在发送和谁在接收。RTS 和 CTS 经常被误用于流量控制,以至于它成为标准。

于 2009-06-05T18:42:14.030 回答
1

一个重要的区别是,如果主机指示某些 UART(尤其是 16550)将 DSR 设置为非活动状态,它们将立即停止接收字符。相反,如果 CTS 处于非活动状态,仍会接收字符。我相信这里的意图是 DSR 表示设备不再监听,因此发送任何进一步的字符是没有意义的,而 CTS 表示缓冲区已满;后者允许一定量的“打滑”,其中流控制线在 DTE 对其进行采样和传输下一个字符之间改变了状态。在(相对)较新的支持硬件 FIFO 的设备中,在 DCE 将 CTS 设置为非活动状态后,可能会传输许多字符。

于 2019-04-01T01:28:58.200 回答