通过python程序给通过串口给硬件下发参数并且接收硬件发过来的数据(超详细教程)
1、首先安装serial和pyserial库。 如果运行程序之后报错说没有这两个库,就把这两个库卸载掉,然后重新安装,安装的顺序是先serial再pyserial。
2、代码中只需要导入serial库即可,即import serial
3、首先初始化打开串口,里面的参数一定要设置正确。即
(串口号,波特率,超时时间,停止位,字节大小)
ser=serial.Serial(COM,921600,timeout=0.1)
4、然后通过一个while循环向串口下发参数。一般是下发文本,在下发的文本后面一定要加上换行符\r\n,否则参数会一直在缓存区,下发不到串口。因为串口的传输内容是二进制的,所以需要将下发的参数编码一下,通过utf-8来编码。有些下发参数的语句是写在循环外面,我在这里是写在循环里面才下发成功的。
参数只能下发一次
参数只能下发一次
参数只能下发一次
send_time=0 #控制参数只下发一次
while True:
if send_time==0:
ser.write('hello\r\n'.encode("utf-8"))
send_time+=1
5、然后通过readline()读取串口发出来的数据
data = ser.readline()
完整代码:
import serial
ser=serial.Serial('COM19',921600,timeout=0.1)
while True:
ser.write('scan start\r\n'.encode("utf-8"))
data = ser.readline()
debug
如果不能成功下发参数或者接收数据,按照下列做法debug即可。
1、首先使用串口助手进行操作,看是否可以正常下发和接收数据
2、使用串口助手可以正常工作。检查serial.Serial()里面的参数和串口助手是否一致。
3、参数正确的情况下,首先使用串口助手给硬件下发参数,然后关闭串口助手(硬件一直连着电脑),使用代码直接读串口数据,看是否可以读取成功。如果不能读取成功,可能读取有问题。
4、如果读取数据没问题,首先使用代码给硬件下发参数,然后停掉程序。打开串口助手,看是否能收到数据。如果不能收到数据,说明是下发参数的代码写得有问题。