前言
- 颜色文本输出需要在支持该功能的终端上使用,如我自己习惯用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(白色)
日志函数
printf("\033[%d;%d;%dm",dis_mode,fwd_clor,bak_clor);
/*
x:显示模式|
y:前景色
z:背景色
*/
/*设置颜色*/ COLR_SET(x,y,z);\
/*设置参数*/ printf(dev_name,
/*设置结束*/ COLR_SET(0,0,0);\
}
/*设置device name的颜色*/ COLR_SET(x0,y0,z0);\
/*设置device name*/ printf("%s",
/*设置参数的颜色*/ 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");
//$$ --BMI160初始化
// if(0==bmi160_init(&dev_bmi160,MX_I2C1_Init))
// {
// BMI160_LOG("> Mounted OK ...\r\n");
// bmi160_config_init(&dev_bmi160);
// }
//$$ --应变传感器初始化
//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");
效果截图