题主想要通过串口通信获取数据但发现返回的数据一直不对,第一次写串口通信,不知道这样写对不对
这是发送的数据格式
下面是python写的代码
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import serial
import serial.tools.list_ports
import time
#把十六进制或十进制的数转成bytes
def num2str(num):
str = hex(num)
str = str[2:4]
if(len(str) == 1):
str = '0'+ str
str = bytes.fromhex(str)
return str
#求校验和,是除应答帧头外其余数据的累加和的低字节。
def checknum(data,leng):
result = 0
for i in range(2,leng):
result += data[i]
result = result&0xff
#print(result)
return result
if __name__ == '__main__':
#串口设置
ser=serial.Serial('com4',115200)
ser.isOpen()
print(ser.isOpen())
print(ser)
datanum = 0x04
b = [0]*(datanum + 5)
#包头
b[0] = 0xEB
b[1] = 0x90
#hand_id号
b[2] = 0x01
#数据个数
b[3] = datanum
#读操作
b[4] = 0x11
#地址
b[5] = 0xCE
b[6] = 0x05
#读取寄存器的长度
b[7] = 0x0c
#校验和
b[8] = checknum(b,datanum+4)
#向串口发送数据
putdata = b''
for i in range(1,datanum+6):
putdata = putdata + num2str(b[i-1])
#发送
ser.write(putdata)
print('发送的数据:')
for i in range(1,datanum+6):
print(hex(putdata[i-1]))
time.sleep(2)
#读取
getdata= ser.read_all()
print('返回的数据:%s \n'%getdata)