From c053afb099481cbf37b65b23c0dbc1b1f5496ae8 Mon Sep 17 00:00:00 2001 From: acevest Date: Tue, 30 Dec 2025 10:41:47 +0800 Subject: [PATCH] =?utf8?q?=E6=B7=BB=E5=8A=A0serial=5Fmonitor=E7=9A=84?= =?utf8?q?=E6=B8=85=E5=B1=8F=E8=83=BD=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- scripts/iso.grub.cfg | 6 ++++-- scripts/serial_monitor/main.go | 34 +++++++++++++++++++++------------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/scripts/iso.grub.cfg b/scripts/iso.grub.cfg index a18af78..f8a932c 100644 --- a/scripts/iso.grub.cfg +++ b/scripts/iso.grub.cfg @@ -2,13 +2,15 @@ #serial --unit=0 #terminal_input serial #terminal_output serial -#terminal_output serial_com0 + +# grub的serial输出自带清屏能力 +# terminal_output serial_com0 load_video set gfxmode=auto set gfxpayload=keep -terminal_output gfxterm +# terminal_output gfxterm set default="0" set timeout=0 diff --git a/scripts/serial_monitor/main.go b/scripts/serial_monitor/main.go index 679c257..ecad897 100644 --- a/scripts/serial_monitor/main.go +++ b/scripts/serial_monitor/main.go @@ -7,6 +7,7 @@ import ( "log" "net" "os" + "strings" "time" ) @@ -17,7 +18,7 @@ var clearMode bool func main() { flag.StringVar(&addr, "a", ":6666", "") flag.StringVar(&logFile, "f", "last.log", "") - flag.BoolVar(&clearMode, "c", true, "clear log file every time") + flag.BoolVar(&clearMode, "c", true, "clear log file and screen every time") flag.Parse() // 创建一个可写的文本文件 @@ -28,17 +29,7 @@ func main() { defer f.Close() for { - var modeStr string - if clearMode { - modeStr = "clear log file every time" - } else { - modeStr = "do not clear log file" - } - log.Printf("listen addr %v log file %v %v", addr, logFile, modeStr) - monitor(f) - - } } @@ -49,6 +40,15 @@ func monitor(f *os.File) { start := time.Now() + var modeStr string + if clearMode { + modeStr = "clear log file every time" + } else { + modeStr = "do not clear log file" + } + log.Printf("lissten addr %v log file %v %v", addr, logFile, modeStr) + + // 不断尝试连接串行控制台 for { conn, err = net.Dial("tcp", addr) @@ -64,8 +64,6 @@ func monitor(f *os.File) { defer conn.Close() - - // 每次连接成功,就清空这个文件,从头开始写数据 if clearMode { err = f.Truncate(0) if err != nil { @@ -73,6 +71,16 @@ func monitor(f *os.File) { } f.Seek(0, 0) + + // 组合转义码:清屏 + 清除滚动缓冲区 + // \033[H 光标移到左上角 + // \033[2J 清空屏幕 + // \033[3J 清除滚动缓冲区(部分终端支持) + fmt.Print("\033[H\033[2J\033[3J") + + // + var divideLine = strings.Repeat("-", 80) + fmt.Printf("\n%v\n\nSCREEN CLEARED AT %v\n\n%v\n\n", divideLine, time.Now().Format("2006-01-02 15:04:05.000"), divideLine) } // 写入当前时间 -- 2.47.0