日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 实现modBus协议的crc校验算法

發布時間:2023/12/31 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 实现modBus协议的crc校验算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CRC校驗

循環冗余校驗碼(cyclic redundancy check)簡稱CRC(循環碼),是一種能力相當強的檢錯、糾錯碼,并且實現編碼和檢碼的電路比較簡單,常用于串行傳送(二進制位串沿一條信號線逐位傳送)的輔助存儲器與主機的數據通信和計算機網絡中。

算法介紹

循環冗余校驗碼由信息碼n位和校驗碼k位構成。k位校驗位拼接在n位數據位后面,n+k為循環冗余校驗碼的字長,又稱這個校驗碼(n+k,n)碼。
n位信息位可以表示成為一個報文多項式M(x),最高冪次是xn-1。約定的生成多項式G(x)是一個k+1位的二進制數,最高冪次是xk。將M(x)乘以xk,即左移k位后,除以G(x),得到的k位余數就是校驗位。這里的除法運算是模2除法,即當部分余數首位是1時商取1,反之商取0。然后每一位的減法運算是按位減,不產生借位。

代碼實現

python有一個專門用于crc校驗的庫(crcmod),下面代碼需要此庫的支持。
安裝:pip install crcmod
以下實例代碼是計算16位的crc校驗,如需其他crc校驗可以查看庫案例說明。

def crc16Add(read):crc16 = crcmod.mkCrcFun(0x18005, rev=True, initCrc=0xFFFF, xorOut=0x0000)data = read.replace(" ", "")readcrcout = hex(crc16(unhexlify(data))).upper()print(readcrcout)str_list = list(readcrcout)print(str_list)if len(str_list) == 5:str_list.insert(2, '0') crc_data = "".join(str_list)print(crc_data)print('CRC16校驗: %s' % (crc_data[4:] + ' ' + crc_data[2:4]))read = data + crc_data[4:] + crc_data[2:4]print('增加Modbus_CRC16校驗:>>> %s' % read)return readif __name__ == '__main__':crc16Add("0141FD0300")

運行結果

總結

以上是生活随笔為你收集整理的python 实现modBus协议的crc校验算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。