软件流控制

软件流控制（Software flow control）是在计算机数据链路中的一种方法，特别适用于RS-232串口通信。采用特殊字符来传输带内信令。特殊编码字符称作XOFF与XON（分别表示"transmit off" 与 "transmit on"）。因此，也被称作“XON/XOFF流控制”。与之相对的是专用的带外数据信令，如RS-232 RTS/CTS。

 表示 
使用ASCII字符集，XOFF一般为字节值19（十进制），XON为字节值17。

 ASR采用了ACSII码控制字符DC3 与 DC1分别用作 XOFF 与 XON。从而成为事实标准。键盘输入 产生 XOFF, 产生 XON。

+ XOFF/XON 的ASCII表示 码的名字 含义 ASCII 十进制 十六进制 键盘输入 XOFF 暂停传输 DC3 19 13  XON 恢复传输 DC1 17 11 

 机制 
当一端的数据连接不再能接受更多数据（或者接近这个状态），它发送XOFF字节给另一端。另一端收到XOFF字节，挂起数据发送。一端如果准备好继续接收数据，它发送XON字节给另一端，另一端恢复数据发送。

例如，假使有一台電腦發送數據給一台低速列印機。 鑒於電腦發送數據的速率快於列印機列印的速率，列印機會落後並有可能被數據淹沒。在此種情形下，列印機會發送XOFF信號給電腦端，令其暫停發送數據。當列印機準備好繼續接受數據時，它會發送一個XON信號給電腦，讓其繼續傳輸數據。

XOFF/XON 能被用於雙向傳輸，例如兩台互連的電傳列印機。

 比较硬件流控制 
软件流控制的优点是降低了收发双方之间的电路導體数量。给定一个共同的电路接地，只需要两条电路分别用于收发。也不需要额外的特定硬件实现。这对于早期（1960年代与70年代）的计算机来说很有意义。 

软件流控制的问题是发送XOFF需要至少一个字符的时间，而且需要排在对方已经接收的数据之后处理。而硬件流控制可以通过UART及时确认信令。 

 应用 
软件流控制广泛用于低速设备，特别是打印机与哑终端，用以指出它们临时暂停接收数据。某些终端控制包，如termcap，采用"padding" （毫秒级的短暂延迟）来给设备流出足够处理时间而不必插入XOFF。

XOFF/XON 也用于让操作者手工暂停与恢复滚屏。 

终端模拟器软件通常实现XOFF/XON作为基本功能。包括Unix与Linux的系统控制台。GUI模拟器如xterm与Win32 console。

数据接收方可以把发送XON作为一项鲁棒技术，在数据发送方偶然（噪声）遇到XOFF后能恢复工作。还常用于表示打印机（如HP LaserJet II）表示在线可以接收数据。 

参见
 IEEE_802.3x

 参考文献 



Category:流控制 (数据)