流控制

流控制

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

基本介紹

  • 中文名:流控制
  • 外文名:Flow control
  • 簡介:串口的流控是指數據流
  • 類別:硬體流控制和軟體流控制
簡介,工作原理,硬體流控制,軟體流控制,兩種控制方式的比較,

簡介

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

工作原理

當接收端的數據緩衝區已滿,無法處理數據來時,就發出"不再接收"的信號,傳送端則停止傳送,直到傳送端收到"可以繼續傳送"的信號再傳送數據。計算機中常用的兩種流控制分別是硬體流控制(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流控制類似,不再進行贅述。

軟體流控制

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

兩種控制方式的比較

當通過軟體流控制方式傳輸二進制數據時,標誌字元也有可能在數據流中出現而引起誤操作,這是軟體流控制的缺陷,而硬體流控制不會有這個問題。

相關詞條

熱門詞條

聯絡我們