【问题标题】:What are the implications of half-duplex serial connections?半双工串行连接的含义是什么?
【发布时间】:2009-04-26 03:42:10
【问题描述】:

使用半双工串行连接与全双工串行连接有何不同?如果双方同时尝试发送数据会发生什么?您最终会收到损坏的数据吗?流量控制对您有帮助吗?

【问题讨论】:

    标签: serial-port duplex


    【解决方案1】:

    在线数据会出现乱码,这可能会也可能不会导致设备接收到乱码数据。有时这将用于检测由于冲突而导致传输失败。

    通常,您不会以与全双工相同的方式使用半双工以异步模式发送单个字符。相反,您会使用一些数据包协议来确定谁有权在何时发送,并包含一些校验和(通常是 CRC)来检测损坏。

    流控制对此没有多大帮助。其目的是确保接收器不会被太多数据溢出。有使用 ASCII 字符 XON 和 XOFF 来启动和停止传输的软件流控制,以及使用 RTS(请求发送)和 CTS(清除发送)控制线的硬件流控制。 XON/XOFF 风格的软件流控制不适用于半双工。

    现在你看不到使用普通 RS-232 和调制解调器的半双工(我在 80 年代将它与声耦合器一起使用,即使在那时也很少见)。但 RS-485 很常见,用于各种协议的工业控制。还有许多其他以半双工方式运行的数据传输标准,主要是当有两个以上的设备连接到同一条线路时(古老的 10base2 以太网、CAN、LIN、FlexRay、I2C ......)。

    【讨论】:

    • 一方面,您写道“软件流控制不适用于半双工”。另一方面,您写“您将使用一些数据包协议来确定谁有权在何时发送”。如果前者失败,为什么后者会起作用?它们不是都可能在半双工环境下失败的基于软件的控件吗?有没有办法使用RTS/CTS来控制谁有权在什么时候发送?
    • 短语“软件流控制”是指数据接收方在传输期间向发送方发送“停止纸带阅读器”控制字符以请求发送方暂停传输直至另行通知(以“启动纸带阅读器”命令的形式)。相比之下,半双工协调协议在发送任何“实际”数据之前协商谁将发送,和/或包括在由于冲突(或其他原因)丢失数据时重新传输数据的方法。作为一个假设的例子......
    • ...两个设备可能会同意,当其中一个有话要说时,它会发出一个“想要传输”字符。当其中一个听到该字符时,它将在一定时间内发出“准备接收”字符并侦听数据。然后,想要传输的设备将在一定时间内发出“数据开始”字符,然后是数据和“数据结束”字符。如果设备发送“Want to send”但没有收到响应,它将等待随机时间再重试(以防对方同时尝试发送)。
    【解决方案2】:

    天哪,你在这个时代从哪里找到半双工线?

    不管怎样,答案是,如果两端都驱动线路,它就会变得混乱。出于这个原因,有指定的 ASCII 字符位于 Clear to Send 和 Data Terminal Ready (CTS and DTR) 用于进行握手。请参阅this tutorial 了解更多信息。

    哎呀,我应该去睡觉了。教程对了,我笨。

    【讨论】:

    • 而且我从未见过没有专用发送/接收引脚的串行端口。
    • 天哪,这在很多层面上都是错误的。 CTS 和 DTR 是控制行,而不是 ASCII 字符。对于流控制(不是握手!)使用 RTS 和 CTS,DTR 更像是一个全局“打开”开关。而对于半双工,这通常不会这样做......
    • Starblue,您似乎对 RS-232 很熟悉。可以请您认真回答问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多