分享:自动输入串口命令并截取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脚本的主要内容,如果未能解决你的问题,请参考以下文章

分享一个串口测试工具

arduino读取一个block值

用Python串口实时显示数据并绘图pyqtgraph(详细教程)

CH340系列串口下载器原理图分享

chrome中如何截取整个网页

linux启动的log能关掉或者不在串口显示吗