当前位置: 首页 > news >正文

串口打印彩色log

单片机开发中串口日志的打印极大方便了我的调试工作,随着日志数据的增加又带来新的问题:短时间吐出的大量数据实在是让人眼花缭乱。
如何在大量数据中一眼找到重点成为我今天的课题。如果在终端中能以不同颜色甚至不同字体展示数据无疑可以在极大程序上解决“海底捞针”的困境。
彩色日志在学习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.jsqmd.com/news/26923/

相关文章:

  • 洛必达法则
  • 2025平航杯
  • 第七天第四天7.4
  • Linux提权基础
  • 第七周第三天7.3
  • 2025年有实力的GEO优化公司TOP10排行榜:GEO系统、GEO优化排名、GEO优化排名软件公司优选
  • rust学习(一)Windows安装rust环境
  • 第一次小测复习
  • 10月30日
  • [AGC007B] Construct Sequences 构造有感
  • 10月30号
  • 从图像到数据:解密医疗器械经营许可证的自动识别技术与全场景应用
  • 任推邦官网
  • 信友队 2025CSP-S第二轮(复赛)模拟赛 解题报告
  • 实验一:AI故事生成平台 调用deepseek大模型
  • 矩阵快速幂常用矩阵构造
  • 新学期每日总结(第17天)
  • 顶级CTF工具与资源大全
  • 第二章 数列极限
  • 小白也能看懂的RL-PPO
  • 第二十三天
  • ICPC2022南京 游记(VP)
  • [KaibaMath]1015 关于收敛数列迫敛性的证明
  • Manancher
  • 搜维尔科技:【技术分享】解析Xsens动捕与人形机器人的训练术语
  • Python while循环 _ 捕捉日落
  • 搜维尔科技:IROS 2025圆满落幕|MANUS手套展示世界级手部追踪技术,从遥操作到具身智能!
  • 2024 暑期模拟赛 #9
  • 三值纠缠模型:智能价值权衡的元能力与实现路径探索
  • 三值纠缠模型:智能价值权衡的元能力与实现路径探索