前言

  • 颜色文本输出需要在支持该功能的终端上使用,如我自己习惯用MobaXterm,一款内置集成多种工具的终端工具。

日志颜色格式说明

  • 1.颜色日志格式

    • 格式:\033[显示方式;字体色;背景色m
    • 如缺省默认:\033[0m //表示结束打印
    • \033 八进制转义 表示ESC
  • 2.显示方式
    • 0(默认值)
    • 1(高亮)
    • 4(下划线)
    • 5(闪烁)
    • 7(反显)
    • 22(非粗体)
    • 24(非下划线)
    • 25(非闪烁)
    • 27(非反显)
  • 3.字体色
    • 30(黑色)
    • 31(红色)
    • 32(绿色)
    • 33(黄色)
    • 34(蓝色)
    • 35(洋红)
    • 36(青色)
    • 37(白色)
  • 4.背景色
    • 40(黑色)
    • 41(红色)
    • 42(绿色)
    • 43(黄色)
    • 44(蓝色)
    • 45(洋红)
    • 46(青色)
    • 47(白色)

日志函数

#define COLR_LOG_MODE //颜色日志输出模式(显示终端需要支持)#ifdef COLR_LOG_MODE#define COLR_SET(dis_mode,fwd_clor,bak_clor) \printf("\033[%d;%d;%dm",dis_mode,fwd_clor,bak_clor);
#else#define COLR_SET(dis_mode,fwd_clor,bak_clor) (NULL);
#endif
/*
x:显示模式|
y:前景色
z:背景色
*/
#define DEVICE_LOG(x,y,z,dev_name,...) {\
/*设置颜色*/        COLR_SET(x,y,z);\
/*设置参数*/        printf(dev_name,##__VA_ARGS__);\
/*设置结束*/        COLR_SET(0,0,0);\
}
#define DEVICE_MULTI_LOG(x0,y0,z0,x1,y1,z1,dev_name,...) {\
/*设置device name的颜色*/       COLR_SET(x0,y0,z0);\
/*设置device name*/       printf("%s",#dev_name);\
/*设置参数的颜色*/         COLR_SET(x1,y1,z1);\
/*设置参数*/        printf(__VA_ARGS__);\
/*设置结束*/    COLR_SET(0,0,0);\
}

示例 (代码局部)

int main(void)
{//$$ --外设初始化HAL_Init();__TODO:     sem_create(&slp_sem);   SystemClock_Config();SystemPower_Config(); MX_GPIO_Init();MX_USART1_UART_Init(); HAL_Delay(1000);    DEVICE_LOG(1,33,40,"[SYSTEM]> MCU Startup...\r\n");DEVICE_LOG(1,33,40,"[SYSTEM]> \r\n");         #if 1//$$ --BMI160初始化
//  if(0==bmi160_init(&dev_bmi160,MX_I2C1_Init))
//  {
//      BMI160_LOG("> Mounted OK ...\r\n");
//      bmi160_config_init(&dev_bmi160);
//  }#endif//$$ --应变传感器初始化//strain_sensor_init(&strain_sensor);//$$ --无线设备[LoRa(Ra-02/SX1278)]初始化   //device_radio_init();//$$ --ADXL355初始化adxl355_init(&adxl355,MX_SPI3_Init_MODE0);   //$$ --RTC初始化   HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);//禁止RTC周期唤醒中断//$$ --IWTD初始化          //MX_IWDG_Init();DEVICE_LOG(1,33,40,"[SYSTEM]-------Guangdong QiTek Smart Sensor Ltd.,Company-------\r\n");DEVICE_LOG(1,33,40,"[SYSTEM]------------Make Data: %s-%s-------\r\n",\(const char *)__TIME__,(const char *)__DATE__);DEVICE_LOG(1,33,40,"[SYSTEM]------------------All Init OK------------------------\r\n");DEVICE_LOG(1,33,40,"[SYSTEM]\r\n"); while (1){      tasks_os_run(multi_task,sizeof(multi_task)/sizeof(*multi_task));//$$ --多任务启动if(0!=sem_take(&slp_sem)) goto __TODO;//$$ --唤醒系统后,重新进入初始化}
}

/*g值数据转换*/
me->acce.x =G_CONVERT(acce_adc_x);//输出值
me->acce.y =G_CONVERT(acce_adc_y);
me->acce.z =G_CONVERT(acce_adc_z);
me->acce.t =T_CONVERT((double)acce_adc_t);me->acce.os_x =G_CONVERT(acce_offset_adc_x);//失调值
me->acce.os_y =G_CONVERT(acce_offset_adc_y);
me->acce.os_z =G_CONVERT(acce_offset_adc_z);  //反正弦(实际加速度/标准加速度)
double rad_a=acos((double)me->acce.x/9.8);//
double rad_b=acos((double)me->acce.y/9.8);//
double rad_c=acos((double)me->acce.z/9.8);///*日志输出*/
DEVICE_MULTI_LOG(1,33,40,\1,37,40,\[ADXL355],\"> Radian data : αr=%0.5frad  | βr=%0.5frad | θr=%0.5frad\r\n",rad_a,rad_b,rad_c);
DEVICE_MULTI_LOG(1,33,40,\1,37,40,\[ADXL355],\"> Angle  data : α =%0.5f°   | β =%0.5f°  | θ =%0.5f°\r\n",\A_CONVERT(rad_a),A_CONVERT(rad_b),A_CONVERT(rad_c));
DEVICE_MULTI_LOG(1,33,40,\1,37,40,\[ADXL355],\"> Accel  data : x =%0.5fg/s  | y =%0.5fg/s | z =%0.5fg/s\r\n",\me->acce.x,me->acce.y,me->acce.z);
DEVICE_MULTI_LOG(1,33,40,\1,37,40,[\ADXL355],\"> Offset data : xs=%0.5fg/s  | ys=%0.5fg/s | zs=%0.5fg/s\r\n",\me->acce.os_x,me->acce.os_y,me->acce.os_z);
DEVICE_MULTI_LOG(1,33,40,\1,37,40,\[ADXL355],\"> Temper data : %0.2f.C\r\n",me->acce.t);                DEVICE_MULTI_LOG(1,33,40,1,37,40,[ADXL355],"> \r\n");

效果截图

串口调试日志打印颜色输出相关推荐

  1. C# DEBUG 调试信息打印及输出详解

    转载自: http://blog.csdn.net/aaaaatiger/article/details/5583301 1.debug只在[debug模式下才执行](运行按钮后面的下拉框可选) 2. ...

  2. log4j2设置控制台日志打印颜色

    在idea上加入JVM参数 -Dlog4j.skipJansi=false 然后在pattern输出格式上加上%highlight属性,%highlight属性是可以正常打印彩色日志的 <Pat ...

  3. 各大Android手机厂商进入工程模式方式{LogCat调试 日志打印}

    注意:在拨号界面输入:以下代码 进入测试菜单界面 华为:*#*#2846579#*#* 小米:*#*#64663#*#* 魅族:*#*#4636#*#* 未完待续...

  4. SocketLog-微信调试、API调试和AJAX的调试的工具,能将日志通过WebSocket输出到Chrome浏览器的console中

    说明 SocketLog适合Ajax调试和API调试, 举一个常见的场景,用SocketLog来做微信调试, 我们在做微信API开发的时候,如果API有bug,微信只提示"改公众账号暂时无法 ...

  5. WSL构建nRF5 SDK + ARM GCC开发环境 – RTT打印调试日志

    陈拓 2022/07/28-2022/11/04 1. 概述 在<WSL构建nRF5 SDK + ARM GCC开发环境> https://zhuanlan.zhihu.com/p/544 ...

  6. NRF52832学习笔记(13)——RTT打印调试日志

    一.背景 Log 信息输出可以方便调试者观察程序运行状态,和常用的串口 printf 的功能相似.但是在 nrf5x 芯片串口只有一个的状态下,如果你已经使用了串口,者时候 Log 显示提供一种不占用 ...

  7. HarmonyOS之调试分析打印HiLog日志

    一.HiLog 日志 HarmonyOS 提供了 HiLog 日志系统,让应用可以按照指定类型.指定级别.指定格式字符串输出日志内容,帮助开发者了解应用的运行状态,更好地调试程序. 输出日志的接口由 ...

  8. 没有串口,如何打印单片机调试信息?

    输出调试信息是嵌入式开发中必不可少的调试利器,嵌入式开发的一个特点是很多时候没有操作系统,或者没有文件系统,常规的打印log到文件的方法基本不适用. 最常用的是通过串口输出uart log,例如51单 ...

  9. 将输出结果以json类型打印在控制台上_系列文章:Kubernetes中日志的正确输出姿势...

    前言 上一期主要和大家介绍从全局维度考虑如何去构建K8s中的日志系统,本期我们从实践角度出发来一步步构建K8s中的日志监控体系.构建日志系统的第一步是如何去产生这些日志,而这也往往是最繁杂最困难的一步 ...

最新文章

  1. 吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(2)
  2. WPF中的动画——(六)演示图板
  3. jvm十五:java虚拟机内存图
  4. Android安全教程(2)---Fiddler简易使用教程之使用
  5. 那些2019年会爆发的泛娱乐黑科技风口——网易MCtalk泛娱乐创新峰会揭秘
  6. 【C语言入门学习笔记】如何把C语言程序变成可执行文件!
  7. 支付宝WAP支付接口开发
  8. 【互联在线1001个设想】之“自需产品在自家店买”
  9. 选择所在城市html按字母,移动端根据字母定位到指定的城市【原创】
  10. python里lambda和filter和map的用法_python中lambda以及与filter/map/reduce结合的用法
  11. AlterID.exe解决teamview商业使用
  12. Excel如何批量生成二维码
  13. oracle 0604,Oracle建立配置环境
  14. 2021年网络工程师中级考点笔记
  15. css制作类似优惠券的卡片样式(vue)
  16. html5 新增input类型,html5新增的input类型
  17. 《黑客帝国》说的是什么?
  18. 深入探讨为什么hbase读数据(scan)性能低
  19. PNAS:整合抑郁症的分子、细胞和皮层神经影像特征
  20. 区块链前景分析和学习建议

热门文章

  1. 如何使用图吧工具箱进行CPU和显卡双烤
  2. 图书管理系统——皇帝的新衣
  3. 淘券通---推荐一款淘宝派券软件
  4. 简单介绍如何调用第三方API
  5. 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题二
  6. SQLiteStudio
  7. 【WINDOWS / DOS 批处理】for命令详解(十)
  8. 调用opencv库进行身份证号码识别主要流程
  9. [转载]油阻焊热转印制做全攻略
  10. UPF电源感知设计与验证