首先我们来看一下RS232接口的所有引脚名称和功能,具体如下:
从上面两个图中可以看到,第4、6、7、8脚就是我们要说的硬件流控引脚。
二、DTR和DSR
DTR:数据终端准备好;DSR:数据设备准备好。
PC开启DSR信号告诉Modem,PC机已经准备好通信;Modem通常开启DSR来应答,让PC机知道Modem准备应答。DTR/DSR主要是用来做建立链接的,即PC数据发送和接收之前,先要建立发送方和接收方的连接,这时候才用到,与流控关系不大,暂不说。
三、RTS和CTS
RTS:请求发送;CTS:清除发送
RTS/CTS流控制过程,如下:
A如果想要发送数据给B的话,A会使得RTS引脚有效,表明其想要“请 求发送”数据给B;
然后A接着就会检测对应的来自B的CTS引脚,直到CTS引脚有效, A才会真正开始发送数据;并且在接下来发送每个字符之前都会去检测对应 的CTS是否有效,如果CTS仍然有效,才会继续传输对应的数据。
如果A发现CTS无效(此时意味着B发生了一些未知情况,如缓存满了, 导致无法继续正常接收数据了,所以将CTS置为无效了),那么A就不能继 续发送数据。
如果CTS一直处于有效的情况下,A就会一直发送数据,直到A 的数据 全部发送完之后,再把RTS置为无效,表示数据已经发送完了。
这就是整个简单的单个的数据发送流程,用RTS和CTS来控制传输的逻 辑。
注意:RTS和CTS引脚有效状态一般是置为1,但具体还要看实际情况。
四、XOFF和XON
上面两种情况都说的是硬件流控,接收方通过引脚的高低来告知或叫控制发送方的发送,这种方式不管发送的数据是二进制格式还是字符格式数据都可以;但是很多情况下我们的设备环境是不具备硬件环境的,这时我们就需要使用软件流控XOFF/XON。
软件流控XOFF/XON不需要用到RTS和CTS引脚。
XOFF/XON的工作流程,如下:
A如果想要给B发送数据,那么A直接会给B进行发送;
当B不想继续接收A的数据时,B通过RXD数据线(即B的TXD数据线)给发送A一个XOFF信号,A接收到XOFF信号就会暂停发送数据;
当B可以继续接收A的数据时,B通过RXD数据线给A发送一个XON信号,A接收到XON信号后就会继续发送数据。
注意:因为XON/XOFF信号也是通过数据信号线发送的,所以软件流控在传输二进制数据时可能会出现错误,因为可能我们发送的数据里面也有XON/XOFF对应的二进制值。我们可以考虑通过对XON/XOFF进行转义来尝试解决该问题。
审核编辑黄宇
-
数据
+关注
关注
8文章
6959浏览量
88911 -
RS232
+关注
关注
13文章
746浏览量
94294
发布评论请先 登录
相关推荐
评论