串列埠流控
流控作用
這裡講到的“流”,指的是資料流。資料在兩個串列埠之間傳輸時,當通訊雙方速率不匹配時,常常會出現丟失資料的現象。如臺式機與微控制器之間的通訊,若接收端資料緩衝區已滿,繼續傳送來的資料就會丟失。在早期網路訊號通過 MODEM 進行資料傳輸時,這個問題就尤為突出。因此,引出流控的概念,當接收端資料處理速度不夠時,就發出“不再接收”的訊號,傳送端就停止傳送,直到收到“可以繼續傳送”的訊號再傳送資料。因此流控制可以控制資料傳輸的程式,防止資料的丟失。常用的兩種流控制是硬體流控制(包括 RTS/CTS、DTR/CTS 等)和軟體流控制 XON/XOFF(繼續/停止),下面分別說明。
硬體流控
硬體流控常用的有 RTS/CTS 流控制和 DTR/DSR(資料終端就緒/資料設定就緒)流控制。實際應用主要以前者為主。訊號說明:
RTS - Request To Send,請求(對端)傳送,用於指示本裝置是否已經準備好接收資料。
CTS - Clear To Send,清除傳送。輸入訊號,用於判斷是否可以向對端傳送資料。
硬體流控首先必須確保硬體支援,用 RTS/CTS(請求傳送/清除傳送)流控制時,應將通訊兩端的RTS、CTS線交叉連線,資料終端裝置(如計算機)使用 RTS 來起始調變解調器或其它資料通訊裝置的資料流。資料通訊裝置(如調變解調器)則根據 CTS 訊號來起動和暫停來自計算機的資料流。工作原理為:根據接收端緩衝區大小設定一個高位標誌(如緩衝區大小的75%)和一個低位標誌(如緩衝區大小的25%),當緩衝區內資料量達到高位時,接收端將 RTS 訊號線置高電平(假設為 TTL 電平,低電平為有效狀態),當傳送端檢測到 CTS 為高電平後,就停止傳送資料,直到接收端緩衝區的資料量低於低位後將 RTS 恢復為低電平。RTS 用來標明接收裝置是否可以接收資料。
常用的流控制還有還有DTR/DSR(資料終端就緒/資料設定就緒)。我們在此不再詳述。由於流控制的多樣性,當軟硬體支援流控時,應做詳細的使用說明。
軟體流控
由於硬體流控有軟硬體的使用限制,因此在某些場合下會使用軟體流控進行替代。一般通過特殊字元 XON/XOFF 來實現軟體流控制。工作原理為:當接收端的輸入緩衝區內資料量超過設定的高位時,就向資料傳送端發出 XOFF 字元(十進位制的 19 或 Control-S,裝置程式設計說明書應該有詳細闡述),傳送端收到 XOFF 字元後就立即停止傳送資料;當接收端的輸入緩衝區內資料量低於設定的低位時,就向資料傳送端發出 XON 字元(十進位制的 17 或 Control-Q),傳送端收到 XON 字元後就立即開始傳送資料。
使用軟體流控時要避免採用的特殊流控字元與普通資料有衝突,以免普通資料誤認為特殊流控字元導致通訊異常。因此實際應用時要根據通訊場景進行特殊字元替換,組合等方式來確保通訊穩定。
相關文章
- CommMonitor 如何開始、暫停、停止監控串列埠?串列埠
- 串列埠blog串列埠
- 串列埠UART串列埠
- 帶內串列埠 在串列埠中輸入命令串列埠
- 串列埠資料抓取及串列埠通訊模擬串列埠
- 你真的瞭解串列埠嗎(示波器串列埠波形分析)串列埠
- 串列埠通訊串列埠
- QT實現串列埠助手中串列埠名的實時更新QT串列埠
- 沒有真實串列埠裝置時使用"虛擬串列埠驅動"除錯你的串列埠程式碼串列埠除錯
- Android 串列埠通訊Android串列埠
- 串列埠小工具串列埠
- 【STM32】串列埠串列埠
- linux 串列埠通訊Linux串列埠
- Linux串列埠程式設計Linux串列埠程式設計
- 11. 串列埠通訊串列埠
- (10)uart串列埠通訊串列埠
- 串列埠通訊型別串列埠型別
- 串列埠,COM口,UART,USART串列埠
- Linux下串列埠監視Linux串列埠
- ubuntu繫結串列埠號Ubuntu串列埠
- 串列埠通訊協議串列埠協議
- 虛擬串列埠工具和串列埠除錯工具詳解 - 附下載地址串列埠除錯
- Android之串列埠程式設計Android串列埠程式設計
- 串列埠無法正常通訊串列埠
- 串列埠屏開發曲線串列埠
- serial for mac 串列埠除錯工具Mac串列埠除錯
- python讀取串列埠 資料Python串列埠
- 串列埠收發UART(Verilog HDL)串列埠
- C# SerialPort 串列埠通訊C#串列埠
- UART串列埠及Linux實現串列埠Linux
- linux串列埠命令列除錯Linux串列埠命令列除錯
- 串列埠通訊利器:SerialPortStream庫詳解,輕鬆實現C#串列埠開發串列埠C#
- 基於VPN網路實現串列埠PLC的遠端監控和程式上下載串列埠
- AndroidSerialPort:安卓串列埠通訊庫Android安卓串列埠
- 安卓下的串列埠測試安卓串列埠
- 安卓串列埠通訊疑問安卓串列埠
- ROS環境下串列埠通訊ROS串列埠
- 串列埠通訊gui介面顯示串列埠GUI
- QT實現簡易串列埠助手QT串列埠