我们在串行通讯处理中,常常看到RTS/CTS和XON/XOFF这两个选项,这就是两个流控制的选项,目前流控制主要应用于MODEM的数据通讯中,但对普通RS-232编程,了解一点这方面的知识是有好处的.那么,流控制在串行通讯中有何作用,在编制串行通讯程序怎样应用呢?这里我们就来谈谈这个问题。
流控制在串行通讯中的作用:这里讲到的"流",当然指的是数据流.数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失.现在我们在网络上通过MODEM进行数据传输,这个问题就尤为突出.流控制能解决这个问题,当接收端数据处理不过来时,就发出"不再接收"的信号,发送端就停止发送,直到收到"可以继续发送"的信号再发送数据.因此流控制可以控制数据传输的进程,防止数据的丢失.PC机中常用的两种流控制是硬件流控制(包括RTS/CTS、DTR/CTS等)和软件流控制XON/XOFF(继续/停止),下面分别说明。
硬件流控制:硬件流控制常用的有 RTS/CTS 流控制和 DTR/DSR (数据终端就绪 / 数据设置就绪)流控制。
硬件流控制必须将相应的电缆线连上,用 RTS/CTS (请求发送 / 清除发送)流控制时,应将通讯两端的 RTS 、CTS 线对应相连,数据终端设备(如计算机)使用 RTS 来起始MODEM或其它数据通讯设备的数据流,而数据通讯设备(如MODEM)则用 CTS 来起动和暂停来自计算机的数据流.这种硬件握手方式的过程为:我们在编程时根据接收端缓冲区大小设置一个高位标志(可为缓冲区大小的 75 %)和一个低位标志(可为缓冲区大小的 25 %),当缓冲区内数据量达到高位时,我们在接收端将 CTS 线置低电平(送逻辑 0 ),当发送端的程序检测到 CTS 为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将 CTS 置高电平. RTS 则用来标明接收设备有没有准备好接收数据。
常用的流控制还有还有 DTR/DSR (数据终端就绪 / 数据设置就绪).我们在此不再详述.由于流控制的多样性,我个人认为,当软件里用了流控制时,应做详细的说明,如何接线,如何应用。
软件流控制:由于电缆线的限制,我们在普通的控制通讯中一般不用硬件流控制,而用软件流控制.一般通过 XON/XOFF来实现软件流控制.常用方法是:当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出 XOFF 字符(十进制的 19 或 Control-S ,设备编程说明书应该有详细阐述),发送端收到 XOFF 字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出 XON 字符(十进制的 17 或 Control-Q ),发送端收到 XON 字符后就立即开始发送数据.一般可以从设备配套源程序中找到发送的是什么字符。
应该注意,若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有这个问题。
Modem
电力专线Modem
LDKX(DL)-1200 Modem
电力数字通道modem
双机双通道LDKX-1200QH Modem
LDKX(DL)-9600 Modem
电力通道切换器
电力通道切换箱
工业Modem
外置工业MODEM
RS485-Modem
语音数据同传Modem
嵌入式Modem
嵌入式同步MODEM
机架Modem
机架商用MODEM
机架工业MODEM
机架专线MODEM
机架式同步MODEM
专线Modem
外置专线MODEM
机架专线MODEM
嵌入式串口专线MODEM
嵌入式TTL专线MODEM
自动拨号Modem
开机自动拨号MODEM
嵌入式自动拨号MODEM
TTL嵌入式MODEM
机架专线MODEM
嵌入式Modem
嵌入式串口工业MODEM
嵌入式TTL 工业MODEM
嵌入式同步MODEM
嵌入式专线Modem
Modem模块
自动复位Modem
外置自动复位Modem
看门狗Modem
外置看门狗Modem
串口Modem
异步Modem
外置Modem
直流Modem
外置直流MODEM
外置电信Modem
其他行业用modem
语音Modem
并口Modem
来电显示Modem
传真Modem
同步Modem
TTL Modem
抄表Modem
工控Modem
ISA Modem
PC104 Modem
无线Modem
基带Modem
协议转换器
光端机
PDH-光端机
电话光端机
视频光端机
串口卡
串口服务器
光纤产品
ISDN
工业接口转换器
English ISDN