------->需要写一个串口发送十六进制命令给下位机,调用python的Serial库发送十六进制下去
原始数据是十进制数,需要转换成没有0x符号的字符串给串口发送,以下为处理过程
1.16进制处理,读入十进制数,保证输出十六进制字符串去除前面的 0x 保存两位16进制数后面的两位数
例如: 0x01 输出01 0x1f 输出1f
def HexProcess(self,decimal):
if decimal < 15 and decimal >= 0:
hex_num = '0'+hex(decimal & 0xFF)[-1:]
else:
hex_num = hex(decimal & 0xFF)[-2:]
return hex_num
2.校验和为前面的十六进制相加之和,返回值为16进制字符串除了0x后面的字符
def CheckSum(self,data):
data_p = int(hex(data & 0xFF),16) # 十进制的负数处理后转换成整型
similardata = 0x5A+0xA5+0x0A+0x55+0x01+0x02+0x0A # 每串数据帧中相同的部分,可修改
sum = similardata + data_p # 加上改变的变量
checksum = hex(sum)[-2:] # 切片保留字符串最后两位
return checksum