serial-port - DTR/DSR 和 RTS/CTS 流量控制有什么区别?

标签 serial-port protocols

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

最佳答案

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

有多种方法可以做事,因为标准中从未内置任何协议(protocol)。您可以使用您的设备实现的任何临时“标准”。

仅从名称来看,RTS/CTS 似乎是天生的组合。然而,它与随着时间的推移而发展的需求背道而驰。这些信号是在终端批量发送满屏数据时创建的,但接收器可能尚未准备好,因此需要流量控制。后来问题会逆转,因为终端无法跟上来自主机的数据,但 RTS/CTS 信号走错方向 - 接口(interface)不是正交的,并且没有相应的信号走相反的路。设备制造商尽最大努力进行调整,包括使用 DTR 和 DSR 信号。

编辑

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

enter image description here

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

调制解调器具有三种状态:关闭、就绪(数据集就绪为真)和已连接(数据载波检测)

在连接调制解调器之前,终端无法执行任何操作。

当终端想要发送数据时,它会提高 RTS,调制解调器会通过 CTS 批准该请求。当调制解调器的内部缓冲区已满时,调制解调器会降低 CTS。

好怀念!

关于serial-port - DTR/DSR 和 RTS/CTS 流量控制有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/957337/

相关文章:

c - 如何将来自 8 位 Controller 的串行数据转换为 asci 格式?

c - Windows 7 上的 ANSI C - 以编程方式生成串行事件 (RS232)

c++ - Arduino serial.available 奇怪的错误

c++ - C、Linux 中的串口读取/打开错误

Clojure:难以成功地将协议(protocol)应用于 2 种类型

ios - 为什么我得到 "generic parameter could not be inferred",通用类型

java.net.MalformedURLException : no protocol:

python - pty多路复用器

ios - 无法将通用值分配给扩展中的协议(protocol) associatedType 变量

ios - 无法将协议(protocol)中声明的 UIView 的 IBOutlet 连接到 xib 实体