分享:自动输入串口命令并截取log的python脚本
Posted fanchenxinok
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分享:自动输入串口命令并截取log的python脚本相关的知识,希望对你有一定的参考价值。
项目需要:系统需要反复上下电,并在系统启动完毕后通过输入"cat /proc/kmsg" 截取kernel启动的log。如果人工输入则无法实现自动化且非常的麻烦。于是想到用python脚本写一个自动化测试的脚本实现:在系统启动后通过读取每行的串口内容,如果打印出了“console:/ $”表示系统的串口可以输入命令了,然后往串口输入获取kernel启动log的命令并通过串口读取log内容并保存为文件。
PC环境: python安装好,并通过 pip3 install pyserial安装串口相关包。
# coding=gbk
import serial.tools.list_ports
import time
import serial
# COM口和波特率要根据自己实际的进行配置
ser = serial.Serial("COM8", 921600, timeout=2000)
#自动化测试获取log,输入串口命令
def run_auto_test():
if ser.isOpen():
print("open success")
while True:
read_chars = ser.readline()
#查找关键字“console:/ $”表示控制台已经准备好可以输入命令了
if read_chars.find("console:/ $".encode()) != -1 :
break
print("执行su")
cmd = "su\\r\\n"
ser.write(cmd.encode())
cmd = "cat /proc/kmsg | grep -i \\"mfd\\"\\r\\n"
#写获取log的命令
ser.write(cmd.encode())
#读20行cat到的log内容并写入文件
n = 20
while n > 0 :
n -= 1
com_input = ser.readline()
if com_input:
print(com_input)
with open('test_log.txt','ab') as f:
f.write(com_input)
else:
print("open failed")
#ser.close()
if __name__ == "__main__":
while True:
run_auto_test()
以上是关于分享:自动输入串口命令并截取log的python脚本的主要内容,如果未能解决你的问题,请参考以下文章