關於串列埠通訊流控控制

2021-10-08 03:08:44 字數 1285 閱讀 5522

首先,我們需要知道什麼「流」,這裡「流」是指資料流。當兩個硬體裝置在通訊時候,通訊的資料就像流體一樣,在兩者之間「流動」。

流,既分方向,也分快慢。在兩個裝置正常通訊時,由於處理速度不同,就存在這樣乙個問題,有的快,有的慢,在某些情況下,就可能導致丟失資料的情況。如台式電腦與微控制器之間的通訊,接收端資料緩衝區已滿,則此時繼續傳送來的資料就會丟失。

流控制能解決這個問題,當接收端資料處理不過來時,就發出「不再接收」的訊號,傳送端就停止傳送,直到收到「可以繼續傳送」的訊號再傳送資料。因此流控制可以控制資料傳輸的程序,防止資料的丟失。pc機中常用的兩種流控制是硬體流控制(包括rts/cts、dtr/cts等)和軟體流控制xon/xoff(繼續/停止)。

2.1硬體流控

硬體流控制常用的有rts/cts流控制和dtr/dsr(資料終端就緒/資料設定就緒)流控制。

rts (require tosend,傳送請求)為輸出訊號,用於指示本裝置準備好可接收資料,低電平有效,低電平說明本裝置可以接收資料。

cts (clear tosend,傳送允許)為輸入訊號,用於判斷是否可以向對方傳送資料,低電平有效,低電平說明本裝置可以向對方傳送資料。

引用網上的一段介紹:

硬流控的rts 、cts :rts (require tosend,傳送請求)為輸出訊號,用於指示本裝置準備好可接收;cts (clear tosend,傳送清除)為輸入訊號,有效時停止傳送。假定a、b兩裝置通訊,a裝置的rts 連線b裝置的cts ;a裝置的cts連線b裝置的rts。前一路訊號控制b裝置的傳送,後一路訊號控制a裝置的傳送。對b裝置的傳送(a裝置接收)來說,如果a裝置接收緩衝快滿的時發出rts訊號(意思通知b裝置停止傳送),b裝置通過cts 檢測到該訊號,停止傳送;一段時間後a裝置接收緩衝有了空餘,發出rts訊號,指示b裝置開始傳送資料。a裝置發(b裝置接收)類似。

2.2 軟體流控

軟體流控和硬體流控都方式一樣,只是實現方式不同而已。在通訊過程中,軟體流控通過在資料流中插入xoff(特殊字元)和xon(另乙個特殊字元)訊號來實現。a裝置一旦接收到b裝置傳送過來的xoff,立刻停止傳送;反之,如接收到b裝置傳送過來的xon,則恢**送資料給b裝置。同理,b裝置也類似,從而實現收發雙方的速度匹配。

最後,由於我使用的是db9串列埠,因此,我們可以再看看其引腳定義,對以上概念也會更加清晰。

由上圖,我們可以知道,如果串列埠只接了rx、tx兩個訊號,那麼要流控的話只能使用軟流控;如果接了rx,tx,cts ,rts四個訊號,那麼可以使用硬流控或者軟體流控。

串列埠通訊流控制

我們在序列通訊處理中,常常看到rts cts和xon xoff這兩個選項,這就是兩個流控制的選項,目前流控制主要應用於modem的資料通訊中,但對普通rs 232程式設計,了解一點這方面的知識是有好處的.那麼,流控制在序列通訊中有何作用,在編制序列通訊程式怎樣應用呢?這裡我們就來談談這個問題。流控制...

串列埠通訊流控制

在序列通訊處理中,常常看到rts cts和xon xoff這兩個選項,這就是兩個流控制的選項,目前流控制主要應用於數據機的資料通訊中,但對普通rs232程式設計,了解一點這方面的知識是有好處的。那麼,流控制在序列通訊中有何作用,在編制序列通訊程式怎樣應用呢?1.流控制在序列通訊中的作用 這裡講到的 ...

串列埠流控 軟體流控與硬體流控

在序列通訊處理中,常常看到rts cts和xon xoff這兩個選項,這就是兩個流控制的選項,目前流控制主要應用於數據機的資料通訊中。那麼,流控制在序列通訊中有何作用,在編制序列通訊程式怎樣應用呢?下面我們就談談這個問題。1.流控制在序列通訊中的作用 這裡講到的 流 當然指的是資料流。資料在兩個串列...