python 实现modBus协议的crc校验算法
CRC校驗(yàn)
循環(huán)冗余校驗(yàn)碼(cyclic redundancy check)簡稱CRC(循環(huán)碼),是一種能力相當(dāng)強(qiáng)的檢錯(cuò)、糾錯(cuò)碼,并且實(shí)現(xiàn)編碼和檢碼的電路比較簡單,常用于串行傳送(二進(jìn)制位串沿一條信號(hào)線逐位傳送)的輔助存儲(chǔ)器與主機(jī)的數(shù)據(jù)通信和計(jì)算機(jī)網(wǎng)絡(luò)中。
算法介紹
循環(huán)冗余校驗(yàn)碼由信息碼n位和校驗(yàn)碼k位構(gòu)成。k位校驗(yàn)位拼接在n位數(shù)據(jù)位后面,n+k為循環(huán)冗余校驗(yàn)碼的字長,又稱這個(gè)校驗(yàn)碼(n+k,n)碼。
n位信息位可以表示成為一個(gè)報(bào)文多項(xiàng)式M(x),最高冪次是xn-1。約定的生成多項(xiàng)式G(x)是一個(gè)k+1位的二進(jìn)制數(shù),最高冪次是xk。將M(x)乘以xk,即左移k位后,除以G(x),得到的k位余數(shù)就是校驗(yàn)位。這里的除法運(yùn)算是模2除法,即當(dāng)部分余數(shù)首位是1時(shí)商取1,反之商取0。然后每一位的減法運(yùn)算是按位減,不產(chǎn)生借位。
代碼實(shí)現(xiàn)
python有一個(gè)專門用于crc校驗(yàn)的庫(crcmod),下面代碼需要此庫的支持。
安裝:pip install crcmod
以下實(shí)例代碼是計(jì)算16位的crc校驗(yàn),如需其他crc校驗(yàn)可以查看庫案例說明。
運(yùn)行結(jié)果
總結(jié)
以上是生活随笔為你收集整理的python 实现modBus协议的crc校验算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows使用ffmpeg教程
- 下一篇: Logistic回归公式推导和代码实现和