代碼 單片機(jī)如何認(rèn)識(shí)代碼和校驗(yàn)?
單片機(jī)如何認(rèn)識(shí)代碼和校驗(yàn)?把所有的代碼加起來計(jì)算總和,然后和最后一個(gè)字節(jié)比較,這只是一種檢查總和的方法。對(duì)于普通通信都可以使用,方法簡單,易于編寫程序。當(dāng)然,您可以自己制定一個(gè)特定的協(xié)議,添加哪些代碼
單片機(jī)如何認(rèn)識(shí)代碼和校驗(yàn)?
把所有的代碼加起來計(jì)算總和,然后和最后一個(gè)字節(jié)比較,這只是一種檢查總和的方法。對(duì)于普通通信都可以使用,方法簡單,易于編寫程序。當(dāng)然,您可以自己制定一個(gè)特定的協(xié)議,添加哪些代碼,不添加哪些代碼,以及放置哪些字節(jié)。也有代數(shù)和、差或和。
Modbus協(xié)議中使用的CRC16驗(yàn)證方法成熟,應(yīng)用廣泛。這個(gè)程序可以在網(wǎng)上找到。
如果通信需要保密,也可以使用各種加密技術(shù)。
你見過最坑的代碼是什么?
我見過的最可憐的代碼是沒有注釋,成百上千行代碼堆積在一起,這是一個(gè)壞的編程習(xí)慣。
以上是查詢和連接數(shù)據(jù)庫的代碼。它應(yīng)該寫為一個(gè)函數(shù)和過程,它是獨(dú)立的,易于記憶和跟蹤。
。
代碼校驗(yàn)說的是什么?
這是數(shù)據(jù)通信中的問題。它也是糾正數(shù)據(jù)通信錯(cuò)誤的一種方法。假設(shè)另一方的網(wǎng)卡向您發(fā)送10100101這樣的數(shù)據(jù)包。由于網(wǎng)線可能受到磁場等干擾因素的干擾,您如何確保收到的數(shù)據(jù)包是正確的?顯然,應(yīng)該有一個(gè)校驗(yàn)和糾錯(cuò)機(jī)制,比如校驗(yàn),把前面的所有數(shù)字相加就是把每一位相加,最后的結(jié)果將以二進(jìn)制形式加到包的末尾。當(dāng)然,這里添加的結(jié)果是4(100),即10100101100將發(fā)送給您。如果你收到的結(jié)果的前8位(數(shù)據(jù)包)由于信號(hào)的突然變化或某種原因以相同的方式計(jì)算,那么與8位后的結(jié)果進(jìn)行比較,如果不相等,那一定是錯(cuò)誤的!這是驗(yàn)證,但我說的是位比較的方法。顯然,只能檢查錯(cuò)誤,不能糾正錯(cuò)誤。也就是說,平等可能不是正確的信息。但是你知道,我用位來檢查,你的論文要求字節(jié)來檢查,其實(shí)沒有區(qū)域不檢查,但是現(xiàn)在網(wǎng)絡(luò)中的小數(shù)據(jù)包通常被丟棄,而且數(shù)據(jù)包中不能只有一個(gè)字節(jié)。事實(shí)上,你的文本是一個(gè)驗(yàn)證算法。一些更好的算法也可以使用糾錯(cuò)碼,它不僅可以檢測錯(cuò)誤,而且可以糾正錯(cuò)誤。當(dāng)然,也有限制。例如,您只能修改一位或多位,如果超過,則需要重新收縮校驗(yàn)碼的校驗(yàn)原則是:系統(tǒng)根據(jù)校驗(yàn)方法導(dǎo)出的校驗(yàn)公式預(yù)先設(shè)置校驗(yàn)程序。在系統(tǒng)中輸入帶有校驗(yàn)碼的代碼時(shí),系統(tǒng)利用校驗(yàn)程序?qū)斎氲捏w碼進(jìn)行計(jì)算,得到校驗(yàn)結(jié)果,然后將校驗(yàn)結(jié)果與輸入代碼的校驗(yàn)碼進(jìn)行比較,檢測輸入是否正確。
如果兩者一致,則表示代碼輸入正確,系統(tǒng)允許輸入。否則表示代碼輸入錯(cuò)誤,系統(tǒng)拒絕輸入,要求重新輸入。檢查代碼的一種常見方法是預(yù)先在計(jì)算機(jī)中建立一個(gè)“代碼字典”,然后將輸入的代碼與字典中的內(nèi)容進(jìn)行比較。如果輸入代碼不一致,則表示輸入代碼錯(cuò)誤。另一種檢查代碼的方法是設(shè)置檢查位。也就是說,在設(shè)計(jì)代碼結(jié)構(gòu)時(shí),在原始代碼中加入一個(gè)校驗(yàn)位,使之成為代碼的一部分。通過預(yù)先確定的數(shù)學(xué)方法計(jì)算校驗(yàn)值。當(dāng)輸入代碼時(shí),計(jì)算機(jī)將根據(jù)輸入代碼以同樣的數(shù)學(xué)方法計(jì)算校驗(yàn)值,并與輸入代碼進(jìn)行比較