list = new_text.split(" ")#str转换为list
check_uselist = list[1:-3]#获取校验所需数据
check_sum_str = sum([zhuanhuan(i) for i in check_uselist])# 将校验总数据转换10进制相加
check_sum_str = ("%04x" % (check_sum_str))# 将10进制和转换回4位16进制补零,得到计算所得的校验位
check_list = list[?:?] # 根据协议计算校验位位置,获取接收信号校验位
flag = checkboolen(check_list, check_sum_str)#判断校验位是否正确
def zhuanhuan(data):
'''
16进制数据转换为10进制
'''
data = int(str(data), 16)
return data
def checkboolen(check_list, sumstr):
'''
注意:本方法是累加和校验法
check_list:截取的接收信号的校验数据数据
sumstr:接收数据中,计算16进制和后,转换为的字符串
'''
flag = True
for i in range(0, 2):
flag = (check_list[i].lower() == sumstr[2 * i:2 * i + 2].lower())#统一小写
if flag == False:
return flag
return flag