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