Python Modbus CRC16 校验 其它CRC校验说明

本文校验使用crcmod库

使用前请安装: pip install crcmod

关于CRC16,mkCrcFun 中的设置参考下表

http://crcmod.sourceforge.net/crcmod.predefined.html#predefined-crc-algorithms

Python Modbus CRC16 校验 其它CRC校验说明_第1张图片

 

根据如上设置对应的mkCrcFun传入值,代码如下


from binascii import *
from crcmod import *

# CRC16-MODBUS
def crc16Add(read):
    crc16 =crcmod.mkCrcFun(0x18005,rev=True,initCrc=0xFFFF,xorOut=0x0000)
    data = read.replace(" ","")
    readcrcout=hex(crc16(unhexlify(data))).upper()
    str_list = list(readcrcout)
    if len(str_list) == 5:
        str_list.insert(2,'0')      # 位数不足补0
    crc_data = "".join(str_list)
    print(crc_data)
    read = read.strip()+' '+crc_data[4:]+' '+crc_data[2:4]
    print('CRC16校验:',crc_data[4:]+' '+crc_data[2:4])
    print('增加Modbus CRC16校验:>>>',read)
    return read

if __name__ == '__main__':

    crc16Add("01 03 08 00 01 00 01 00 01 00 01")

运行结果如下:

CRC16校验: 28 D7
增加Modbus CRC16校验:>>> 01 03 08 00 01 00 01 00 01 00 01 28 D7

以上.

你可能感兴趣的:(Python工具,物联网,阿里云,Python,Pycharm,Python,Modbus,CRC校验,CRC16)