串列埠通訊資料位長度對傳輸資料的影響

2021-08-07 01:57:15 字數 1242 閱讀 9861

針對串列埠通訊,關於設定資料位長度對通訊的影響,如圖:

在串列埠資料通訊中,會看到串列埠引數設定。其中「資料位」設定,共有四檔選項,分別是8、7、6、5。那麼改變這個引數會對資料的傳輸有什麼影響呢?

我來做個試驗,通過示波器觀察通訊過程,能夠分析結果如下:

例如資料位設定為5。那麼就相當於規定了每個傳輸位元組只能由5個二進位制位來表示,例如:11111,10110,01110等。也就是說,這個rs232口只能傳送00000~11111這個範圍內的數,如果傳送乙個比11111還大的數,例如11111+1,也就是100000,那麼經過這個rs232口的處理以後,只會傳送出去乙個00000,而接收端只能接收到00000。這樣看起來貌似傳送的資料和接收的不一樣,其實這是串列埠資料位長度決定了他會傳送多少位資料,超出的位是不會被傳送的。

通過示波器觀察,我們就能清楚的看到,如果裝置是正常的情況下,且串列埠傳送端和接收端都設定資料位為5位,傳送下面這些十六進製制數,會顯示出如下波形:

分別在串列埠除錯軟體的傳送視窗輸入上面的這四個十六進製制數,就能通過示波器看到這些數字所對應的二進位製碼波形。資料位設定是5位,要從右往左檢視波形,因為串列埠通訊是先傳輸低位,後傳輸高位,所以要反過來讀取二進位制位。

通過上面的觀察,我們可以確定,如果資料位設定是5位,那麼我們可以傳送的最大數字是0x1f,也就是二進位制數11111b。超過0x1f的數就保留低五位,所構成的二進位制數,就是能夠被接收到的數;如果我們設定資料位是6位,那麼我們可以傳送的最大數字就是0x3f。超過0x3f的數就就保留低六位,所構成的二進位制數,就是能夠被接收到的資料。

另外,我們知道,乙個ascii碼必須要用8位二進位制數來表示,其中低7位表示字元,同時還要注意,在標準ascii中,最高位(b7)用作奇偶校驗位。這也就意味著如果串列埠傳輸的資料位設定是5或者6位,那麼這種情況下,串列埠是無法傳送出ascii碼表中數值大於11111b(十進位制31)或者111111b(十進位制63)的數所表示ascii字元的。

比如我們設定串列埠資料位是5位,我們傳送乙個字母a,我們知道在字母a在ascii碼中的十進位制數是97,二進位制是1100001b,大於11111b。則此時只能傳輸出去後五位,也就是00001b,而接收端只會顯示出十六進製制數01,而不能顯示出乙個完整的字母a。只有資料為設定是7位和7位以上時,才能傳輸乙個完整的ascii字元

串列埠通訊資料位長度對傳輸資料的影響

針對串列埠通訊,關於設定資料位長度對通訊的影響,如圖 在串列埠資料通訊中,會看到串列埠引數設定。其中 資料位 設定,共有四檔選項,分別是8 7 6 5。那麼改變這個引數會對資料的傳輸有什麼影響呢?我來做個試驗,通過示波器觀察通訊過程,能夠分析結果如下 例如資料位設定為5。那麼就相當於規定了每個傳輸位...

串列埠通訊接收資料位和資料對齊的BUG

前言 最近好像和bug槓上了,一直在忙著找bug,上個禮拜修了乙個禮拜的電路板,前天又開始找程式的bug,直到今天才結束。在本次找程式bug中自己學會了資料對齊和串列埠通訊注意的地方。本次主要記錄找bug和解決bug的過程。不喜勿噴。背景本次剛來公司幾個月,接收了別人之前做過的產品,那我就負責產品維...

對傳輸資料的壓縮

上次寫了關於客戶端與服務端傳輸資料的加密,但對大量資料加密操作要花費大量的時間,所以對於大量資料最好進行壓縮後再加密,同時我們平時傳輸的資料如果太多也可以壓縮後再傳輸,我們對zip加密方法對資料加密,先寫 public class ziputils 使用zip進行壓縮 param str 壓縮前的文...