• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
python校验码

最后两位是生成的校验码,前面是原码

 

 

# -*- coding: utf-8 -*-

#activate py37_tfgpu1131_keras215_opencv341

from binascii import *
#   安装pip3 install --no-cache-dir -U crcmod
import crcmod

#生成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)
    # print(str_list)
    if len(str_list) == 5:
        str_list.insert(2, '0')  # 位数不足补0,因为一般最少是5个
    crc_data = "".join(str_list) #用""把数组的每一位结合起来  组成新的字符串
    # print(crc_data)
    read = read.strip() + ' ' + crc_data[4:] + ' ' + crc_data[2:4] #把源代码和crc校验码连接起来
    # print('CRC16校验:', crc_data[4:] + ' ' + crc_data[2:4])
    print(read)
    return read

if __name__ == '__main__':
    crc16Add("78 34 01 00 29 BC FD 00 00 00 00 00 00 14 00 01 00 01 02 01 01 0C 00 00 30 00 31 00 32 00 33 00 34 00 35")
    #78 34 01 00 29 BC FD 00 00 00 00 00 00 14 00 01 00 01 02 01 01 0C 00 00 30 00 31 00 32 00 33 00 34 00 35 B8 83
    
    crc16Add("78 34 01 00 29 BC FD 00 00 00 00 00 00 14 00 01 00 01 02 06 01 0C 00 CE D2 B0 AE D6 D0 BA BD C8 ED BC FE")
    #78 34 01 00 29 BC FD 00 00 00 00 00 00 14 00 01 00 01 02 06 01 0C 00 CE D2 B0 AE D6 D0 BA BD C8 ED BC FE 45 8C

  

https://www.23bei.com/tool-59.html   CRC-16(Modbus)

78开始  校验位结束

 

 

posted on 2021-07-10 19:58  MKT-porter  阅读(293)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3