栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

串口调试打印[支持文本颜色输出]

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

串口调试打印[支持文本颜色输出]


日志颜色格式说明
  • 颜色日志格式
  • 格式:33[显示方式;字体色;背景色m
  • 如缺省默认:33[0m //表示结束打印
  • 33 八进制转义 表示ESC

-显示方式

  • 0(默认值)
  • 1(高亮)
  • 4(下划线)
  • 5(闪烁)
  • 7(反显)
  • 22(非粗体)
  • 24(非下划线)
  • 25(非闪烁)
  • 27(非反显)

-字体色

  • 30(黑色)
  • 31(红色)
  • 32(绿色)
  • 33(黄色)
  • 34(蓝色)
  • 35(洋红)
  • 36(青色)
  • 37(白色)

-背景色

  • 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("33[%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...rn");
	DEVICE_LOG(1,33,40,"[SYSTEM]> rn");			
	#if 1
	//$$ --BMI160初始化
//	if(0==bmi160_init(&dev_bmi160,MX_I2C1_Init))
//	{		 
//		BMI160_LOG("> Mounted OK ...rn");
//		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-------rn");
	DEVICE_LOG(1,33,40,"[SYSTEM]------------Make data: %s-%s-------rn",
	          (const char *)__TIME__,(const char *)__DATE__);
	DEVICE_LOG(1,33,40,"[SYSTEM]------------------All Init OK------------------------rn");
	DEVICE_LOG(1,33,40,"[SYSTEM]rn");	

	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.5fradrn",rad_a,rad_b,rad_c);		
DEVICE_MULTI_LOG(1,33,40,
				1,37,40,
				[ADXL355],
				"> Angle  data: α =%0.5f°   | β =%0.5f°  | θ =%0.5f°rn",
				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/srn",
				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/srn",
				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.Crn",me->acce.t);				
				DEVICE_MULTI_LOG(1,33,40,1,37,40,[ADXL355],"> rn");

效果截图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号