对于很多嵌入式工程师来说,经常需要使用各种串口来显示数据和测试,有时候需要自动化地测试命令,使用一般的串口工具就难以满足要求,这时使用Python来写串口程序,就更加方便了。因为它可以根据嵌入式系统发送出来的命令,进行不同的情况处理,可以回应不同的命令。另外也可以使用它来过滤没用的数据,比如关注特定的日志,这样就可以少花费时间。
下面就来做一个串口的程序,首先使用pip安装串口模块:
pip install pyserial
安装完成之后,才可以使用串口模块,简单的测试程序如下:
-
#蔡军生 2020-03-22
-
#自动化测试
-
#
-
#
-
import serial
-
-
#
-
-
-
ser = serial.Serial(
"com5",
9600,timeout=
0.5)
#winsows系统使用com1口连接串行口
-
print(ser.name)
-
print(ser.is_open)
-
-
recv = []
-
while
True:
-
if ser.in_waiting:
-
r = ser.read()
-
if r !=
None:
-
recv.append(r)
-
print(recv)
-
-
-
-
-
ser.close()
要理解这个程序,要看懂下面的文档:
serial = serial.Serial(‘COM1’, 115200) 打开COM1并设置波特率为115200,COM1只适用于Windows
serial = serial.Serial(‘/dev/ttyS0’, 115200) 打开/dev/ttyS0并设置波特率为115200, 只适用于Linux
print serial .portstr 能看到第一个串口的标识
serial .write(“hello”) 往串口里面写数据
serial .close() 关闭serial 表示的串口
serial .open() 打开串口
data = serial .read(num) 读num个字符
data = serial .readline() 读一行数据,以/n结束,要是没有/n就一直读,阻塞。
serial .baudrate = 9600 设置波特率
print serial 可查看当前串口的状态信息
serial .isOpen() 当前串口是否已经打开
serial.inWaiting() 判断当前接收的数据
serial.flushInput() 清除输入缓冲区数据
serial.flushOutput() 中止当前输出并清除输出缓冲区数据
其它的文档可以参考官主的文档:https://pythonhosted.org/pyserial/pyserial_api.html
转载:https://blog.csdn.net/caimouse/article/details/105032084