上位機串列埠資料檢驗方式(二) 奇偶校驗

2021-09-24 04:41:20 字數 977 閱讀 2905

奇偶校驗這個概念在邏輯設計裡面經常會用到,但有的人對奇偶校驗的理解很混亂。奇偶校驗是對資料傳輸正確性的一種校驗方法。在資料傳輸前附加一位奇校驗位,用來表示傳輸的資料中"1"的個數是奇數還是偶數,為奇數時,校驗位置為"0",否則置為"1",用以保持資料的奇偶性不變。

1.奇校驗:

(1)資料位中「1」的數目是偶數的時候,校驗位取「1」(即資料位後面加追1),保證傳送的資料報中的「1」的數目為奇數。

(2)資料位中「1」的數目是奇數的時候,校驗位取「0」(即資料位後面加追0),保證傳送的資料報中的「1」的數目為奇數。

2.偶校驗

(1)資料位中「1」的數目是偶數的時候,校驗位取「0」(即資料位後面加追0),保證傳送的資料報中的「1」的數目為偶數。

(2)資料位中「1」的數目是奇數的時候,校驗位取「1」(即資料位後面加追1),保證傳送的資料報中的「1」的數目為偶數。

簡單口訣可以記一下:就是奇校驗就是保證加上資料位之後「1」的數目為奇數,偶校驗就是保證加上資料位之後「1」的數目為偶數。

舉個栗子來說明一下,比如要傳送的資料位為「1011011」中資料位中「1」的數目為5(奇數),

(1)如果是奇校驗傳送的話,校驗位為「0」,追加「0」,即資料報為「10110110」

(2)如果是奇校驗傳送的話,校驗位為「1」,追加「1」,即資料報為「10110111」

奇偶校驗是有一定的漏洞,再拿奇校驗舉個例子,比如傳送「1011011」傳送方奇校驗傳送為「10110110」,接收方接收再進行奇校驗之後是「101101100」其中「1」的數目還是奇校驗,看起來是沒有變化。

但是。。。。

當傳輸的過程**現資料出錯,比如偶數個「1」發生了錯誤,比如傳送的奇校驗資料位「10110110」,然後接收方接受到的是「10000110」再進行奇校驗還是「100001100」其中「1」的數目還是奇數,所以不會察覺到資料在傳輸的過程中發生的錯誤,所以說奇偶校驗還是有一定的漏洞。

對於偶校驗,也是偶數的「1」發生出錯的話還是會出現這種漏洞,具體讀者自測。

Matlab串列埠上位機

code matlab的 串列埠上位機,徐方鑫,2011,2,16 clearall 清空資料 clf 清除figure port1 serial com2 開啟串列埠2 port1.baudrate 9600 串列埠波特率9600 fopen port1 開啟串列埠 b fread port1,1...

C 上位機軟體 串列埠

using system.io.ports 串列埠類 serialport 屬於該命名空間 string portstr serialport.getportnames 搜尋當前裝置下的串列埠 該方法為串列埠類的靜態方法,呼叫方法 類名 函式名public serialport sp newseri...

LabVIEW上位機與串列埠通訊

大一的時候,學校開了門公共選修課,叫labview程式設計,當時的我當然還不知道labview是啥東東,但還是選了。上課的老師是機械學院的乙個副教授,他給我們展示了好幾個用labview做的專案,譬如油箱監控上位機等,已經不太記得了。後來隨著學習微控制器 arm等的串列埠操作,有時候乙個漂亮的上位機...