串口打印彩色log

news/2025/10/30 23:11:12/文章来源:https://www.cnblogs.com/JonathanRay/p/19178329

单片机开发中串口日志的打印极大方便了我的调试工作,随着日志数据的增加又带来新的问题:短时间吐出的大量数据实在是让人眼花缭乱。
如何在大量数据中一眼找到重点成为我今天的课题。如果在终端中能以不同颜色甚至不同字体展示数据无疑可以在极大程序上解决“海底捞针”的困境。
彩色日志在学习zerphy中就给我留下深刻印象,今日是第一次实现这个功能。
终端通过ANSI转义序列识别内部指令,查阅资料,将颜色及字体相关的序列摘抄如下:

转义序列码 对应的重置序列 描述
ESC[1;34;{...}m 设置单元格(?)的图形模式,用分号分隔 ;
ESC[0m 重置(消除)所有颜色和图形
ESC[1m ESC[22m 粗体
ESC[2m ESC[22m 虚化(暗淡)
ESC[3m ESC[23m 斜体
ESC[4m ESC[24m 下划线
ESC[5m ESC[25m 闪烁
ESC[7m ESC[27m 反向
ESC[8m ESC[28m 隐形
ESC[9m ESC[29m 删除线
颜色名 前景色(字)码 背景色码
30 40
31 41
绿 32 42
33 43
34 44
品红 35 45
36 46
37 47
默认 39 49
重置 0 0

代码示例:

点击查看代码
void DBG_Inf(DbgLevel_eTypeDef _level, char *fmt,...)
{uint16_t len=0;va_list args;//_level小于调试打印输出级别时不打印数据if(_level < DBG_LOG_LEVEL)return;va_start(args, fmt);            //获取可变参数列表的第一个参数地址if(DBG_LEVEL_INFO == _level){memcpy(dbg_buf, (const void*)"INFO:", sizeof("INFO:"));len = sizeof("INFO:");}else if(DBG_LEVEL_WARN == _level){memcpy(dbg_buf, (const void*)"\x1b[33mWARN:", sizeof("\x1b[33mWARN:"));len = sizeof("\x1b[33mWARN:");}else if(DBG_LEVEL_ERR == _level){memcpy(dbg_buf, (const void*)"\x1b[31mERR:", sizeof("\x1b[31mERR:"));len = sizeof("\x1b[31mERR:");}len += vsnprintf(dbg_buf+len, DBG_BUF_LENGTH, fmt, args);va_end(args);UART_SendDatas(DEBUG_UARTx, (uint8_t *)dbg_buf, len);UART_SendDatas(DEBUG_UARTx, "\x1b[0m", sizeof("\x1b[0m"));
}

效果展示

ScreenShot_2025-10-30_230420_288

参考链接:https://www.cnblogs.com/chargedcreeper/p/-/ANSI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/951196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛必达法则

洛必达法则:若 \(f(x)\) 在 \(a\) 附近可导,\(g(x)\) 在 \(a\) 附近可导,且 \(f(a) = 0,g(a) = 0\) 或 \(f(a) = \infty,g(a) = \infty\),则有: \[\lim_{x\to a}\dfrac{f(x)}{g(x)} = \lim_{x\to a}\dfrac{f(x)}{…

2025平航杯

计算机取证 计算机取证-1 可以直接找到计算机取证-2 直接翻所以是5 计算机取证-3这里可以看出来使用Edge浏览器记录最多 可以推断Edge是默认浏览器 计算机取证-4在Edge里面发现了 计算机取证-5开关机时间里面可以找到 …

第七天第四天7.4

所用时间:405分钟 代码量(行):352 了解到的知识点: 1.企业岗位招聘调查 字节跳动技术岗招聘流程呈现“标准化、高门槛、重实战”的特点,网申阶段强调岗位匹配度,笔试聚焦基础与解题能力,面试通过多轮分层评估技…

第七周第三天7.3

所用时间:90分钟 代码量(行):112 了解到的知识点:

Linux提权基础

Linux提权基础 Linux 用户和用户组 用户和用户组的概念: 在 Linux 系统中,用户(User) 和用户组(Group) 是实现 “多用户权限管理” 的核心机制,目的是隔离不同操作者的资源访问范围,保证系统安全和有序运行。简…

2025年有实力的GEO优化公司TOP10排行榜:GEO系统、GEO优化排名、GEO优化排名软件公司优选

在当今数字化营销浪潮中,全域GEO搜索排名推广系统等相关产品成为企业提升品牌曝光度、拓展客户群体的关键利器。山东地标数字科技有限公司作为行业佼佼者,在这一领域展现出独特的魅力与实力。然而,不少企业在营销之…

rust学习(一)Windows安装rust环境

Windows下安装Rust考虑到默认安装目录以及文件下载速度,可以提前设置好环境变量1.配置环境变量信息RUSTUP_DIST_SERVER RUSTUP_UPDATE_ROOT RUSTUP_HOME 默认安装位置为C:\User\[用户名]\.rustup CARGO_HOME默认安装位…

第一次小测复习

switch(x) 中的 x 可以是 ** 整型** 或者 字符型 。(PPT里面的整数类型大致是包含这两个吧) 注意 D 是十六进制的 13,`D` 是字符。 看 for 之类的较为复杂的循环时,不要想当然,每一步都要认真验算! 尤其是循环嵌…

10月30日

今完成了MES管理系统的开发实践,深入理解了生产管理系统的业务逻辑和技术实现。通过Servlet和JSP的配合使用,掌握了Web应用的基本架构模式。在开发过程中,特别注重数据验证的重要性,包括生产批次的10位数字格式验证…

2025 年 10 月装修公司权威推荐榜:老房翻新/毛胚房改造/局部翻新/设计施工/水电改造/现代简约/奶油风格/法式风格/全包装修/半包装修公司推荐

2025 年 10 月装修公司权威推荐榜:老房翻新/毛胚房改造/局部翻新/设计施工/水电改造/现代简约/奶油风格/法式风格/全包装修/半包装修公司推荐随着城市化进程的不断推进和居民生活品质的提升,装修行业正迎来新一轮的发…

[AGC007B] Construct Sequences 构造有感

给定\(n\)的排列\(P_n\), 构造\(A_n,B_n\)满足\(A_1<A_2<...<A_n\) \(B_1>B_2>...>B_n\) \(A_{P_1}+B_{P_1}<A_{P_2}+B_{P_2}<...<A_{P_n}+B_{P_n}\) \(1\leq n\leq 2\times 10^4\) \(1\le…

IMO2025 Problem 4

考虑 \(n = p_1^{\alpha_1}p_2^{\alpha_2}\cdots p_k^{\alpha_k}~(p_1 < p_2 < \cdots < p_k)\),由于除自身外还有 \(3\) 个因子,故满足 \(\alpha_1 \ge 2\) 或 \(k \ge 2\)。 考虑最大的真因子一定为 \(\d…

10月30号

今天上了数构和体育

从图像到数据:解密医疗器械经营许可证的自动识别技术与全场景应用

在医疗器械行业,合规是生命线。而《医疗器械经营许可证》则是企业进入市场、开展经营活动的核心“通行证”。随着数字化转型的深入,一种高效、精准的技术——医疗器械经营许可证识别技术应运而生,正深刻地改变着行业…

vllm openwebui

架构 下载模型(modelscope) -> vLLM (推理框架) -> openWeb UI uv python管理工具source .venv/bin/activate (要激活才能够直接当命令行用)这个很重要!!pip install uvuv initsource .venv/bin/activate ex…

48届西安icpc区域赛

题解(qoj)https://qoj.ac/download.php?type=attachments&id=1784&r=1 补题:https://codeforces.com/gym/105471 过的先不写。。 I 这题分为相对独立的两个部分,找到有效的三元组,以及求解二维数点最大值…

任推邦官网

任推帮,任推帮,人推帮,官网任推邦官网 网盘拉新项目概览与收益对比平台名称 官方网站 移动端/PC端拉新奖励 会员分成比例 转存资源收益 (CPA/CPS) 推广渠道 特色/备注1. 夸克网盘 https://pan.quark.cn 移动端 7 /…

信友队 2025CSP-S第二轮(复赛)模拟赛 解题报告

比赛链接 T1 题意关键词:断边连边,求某连通块的a的2^k之和。 做法关键词:线段树分治,并查集,费马小定理,循环节,扩展欧拉定理 打表可知998244353对于任意的a循环节都在50以内。于是我们预处理这些次幂的结果然后…

实验一:AI故事生成平台 调用deepseek大模型

实验一:AI故事生成平台 实验名称: AI故事生成平台 - 核心数据模型与文本生成 核心任务: 构建平台的后端核心,实现基于关键词的自动故事生成。 任务要求: 设计并实现 Story 数据模型,至少包含标题、故事梗概、正文…

矩阵快速幂常用矩阵构造

斐波那契数列: \(F_i = F_{i-1} + F_{i-2}\) \[\begin{bmatrix} F_i \\ F_{i-1} \end{bmatrix}= \begin{bmatrix} 1 & 1 \\ 1 & 0 \end{bmatrix} \times \begin{bmatrix} F_{i-1} \\ F_{i-2} \end{bmatrix} = …