複製鏈接
請複製以下鏈接發送給好友

流控制

鎖定
數據在傳輸過程中容易出現數據丟失的現象,例如:兩台計算機通過串口傳輸數據時,或者台式機與單片機之間進行通信時,可能由於兩端計算機的處理速度不同,出現接收端的數據緩衝區已滿,而發送端依然繼續發送數據,則導致數據丟失。流控制的出現就是為了解決這種數據丟失的問題。
中文名
流控制
外文名
Flow control
簡    介
串口的流控是指數據流
類    別
硬件流控制和軟件流控制

流控制簡介

這裏講到的“流”,當然指的是數據流。數據在兩個串口之間傳輸時,常常會出現丟失數據的現象,或者兩台計算機的處理速度不同,如台式機與單片機之間的通訊,接收端數據緩衝區已滿,則此時繼續發送來的數據就會丟失。我們在網絡上通過modem進行數據傳輸,這個問題就尤為突出。流控制能解決這個問題,當接收端數據處理不過來時,就發出“不再接收”的信號,發送端就停止發送,直到收到“可以繼續發送”的信號再發送數據。因此流控制可以控制數據傳輸的進程,防止數據的丟失。 pc機中常用的兩種流控制是硬件流控制(包括rts/cts、dtr/dsr等)和軟件流控制xon/xoff(繼續/停止)。 [1] 

流控制工作原理

當接收端的數據緩衝區已滿,無法處理數據來時,就發出"不再接收"的信號,發送端則停止發送,直到發送端收到"可以繼續發送"的信號再發送數據。計算機中常用的兩種流控制分別是硬件流控制(RTS/CTS、DTR/DSR等)和軟件流控制(XON/XOFF)。

流控制硬件流控制

硬件流控制必須將相應的電纜線連上。硬件流控制常用方式為:RTS/CTS(請求發送/清除發送)流控制和DTR/DSR(數據終端就緒/數據設置就緒)流控制。
當用RTS/CTS流控制時,需將通訊兩端的RTS、CTS線對應相連,數據終端設備(如計算機)使用RTS來啓動調制解調器或其它數據通訊設備的數據流,而數據通訊設備(如調制解調器)則用CTS來啓動和暫停來自計算機的數據流。這種硬件握手方式的過程為:通過程序為接收端緩衝區大小設置一個高位標誌(可為緩衝區大小的75%)和一個低位標誌(可為緩衝區大小的25%),當緩衝區內數據量達到高位時,接收端將CTS線置低電平(送邏輯0),當發送端的程序檢測到CTS為低後,就停止發送數據,直到接收端緩衝區的數據量低於低位而將CTS置高電平。RTS則用來標明接收設備有沒有準備好接收數據。
DTR/DSR流控制的工作方式與RTS/CTS流控制類似,不再進行贅述。 [2] 

流控制軟件流控制

由於電纜線的限制,普通的控制通訊中一般不用硬件流控制,而使用軟件流控制。軟件流控制常通過XON/XOFF來實現。這種軟件握手方式的過程為:當接收端的輸入緩衝區內數據量超過設定的高位時,就向數據發送端發出XOFF字符(十進制的19或Control-S,設備編程説明書會有詳細闡述),發送端收到XOFF字符後就立即停止發送數據;當接收端的輸入緩衝區內數據量低於設定的低位時,就向數據發送端發出XON字符(十進制的17或Control-Q),發送端收到XON字符後就立即開始發送數據。一般可以從設備配套源程序中找到發送的字符是什麼。

流控制兩種控制方式的比較

當通過軟件流控制方式傳輸二進制數據時,標誌字符也有可能在數據流中出現而引起誤操作,這是軟件流控制的缺陷,而硬件流控制不會有這個問題。
參考資料
  • 1.    於瑋, 徐德鴻, 周朝陽. 並聯UPS系統均流控制[J]. 中國電機工程學報, 2008, 28(21):63-67.
  • 2.    何亮, 方宇, 李吉,等. 峯值電流控制DC/DC變換器的恆值限流方法[J]. 電工技術學報, 2006, 21(10):86-89.