你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

教你用C语言编写打印彩色字符,还带闪烁哦!

[复制链接]
gaosmile 发布时间:2020-4-20 13:26
1. ANSI escape code
最近在研究日志打印组件easylogger,玩转各种彩色日志打印不亦乐乎,好奇心越来越重,遂深入研究,发现了一个非常神奇的东西:ANSIescape code!
escape  sequence code 全称叫做 escapesequence code,即 Escape 序列屏幕控制码,其实就是一些特殊的字符,将这些字符加入到printf打印的内容中,即可轻松实现在终端软件中以各种颜色、各种背景色显示内容,还可以高亮、加粗、闪烁,非常好玩!
2. 序列码格式
一串escapecode的内容如下:
·     
特殊字符\033 :通知终端切换到escape模式;
·     
起始字符[CSI内容的开始;
·     
CSI内容字符(见下表);
·     
CSI结束字符mCSI内容的结束;
其中,CSI模式全称Command Sequence Introduction,当终端软件处于CSI模式时,终端软件读取之后的ASCII码作为CSI内容,直到读入CSI结束字符,代表不同字符的ASCII字符之间用分号隔开。
代表背景颜色的特殊ASCII字符:
   
字符
   
颜色
  
40
  
黑色
  
41
  
红色
  
42
  
绿色
  
43
  
黄色
  
44
  
蓝色
  
45
  
紫色
  
46
  
深绿
  
47
  
白色
代表字体颜色的特殊字符:
   
   
字符
   
颜色
  
30
  
黑色
  
31
  
红色
  
32
  
绿色
  
33
  
黄色
  
34
  
蓝色
  
35
  
紫色
  
36
  
深绿
  
37
  
白色
其它一些屏幕控制ASCII字符:
   
字符
   
动作
  
0
  
关闭所有属性
  
1
  
设置高亮度
  
4
  
下划线
  
5
  
闪烁
  
7
  
反显
  
8
  
消隐
最后还有一些控制终端光标的字符:
  
   
字符
   
动作
  
nA
  
光标上移n行
  
nB
  
光标下移n行
  
nC
  
光标右移n行
  
nD
  
光标左移n行
  
y; xH
  
设置光标位置
  
2J
  
清屏
  
K
  
清除从光标到行尾的内容
  
s
  
保存光标位置
  
u
  
恢复光标位置
  
?25l
  
隐藏光标
  
?25h
  
显示光标
3. 示例
blabla一大堆,没法理解,接下来用实例说话,首先准备一份已经重定向printf到串口的工程,保证printf可以正常使用即可,并且使用终端软件查看串口输出(eg.Mobaxterm)。
① 打印没有背景色,字体颜色为绿色,字体正常的字符:
printf("\033[32mHelloWorld\r\n");
编译下载,即可看到效果:
微信图片_20200420131631.png

② 及时取消属性
设置属性之后,该属性在终端中一直存在,必须要及时取消,比如在刚刚的printf之后,继续正常打印,不加特殊字符,依然会打印绿色字符:
printf("\033[32mHelloWorld\r\n");
printf("HelloWorld 2\r\n");
printf("HelloWorld 3\r\n");
微信图片_20200420131635.png

所以要在使用完毕后及时取消所有属性设置,如下:
printf("\033[32mHelloWorld\033[0m\r\n");
printf("HelloWorld 2\r\n");
printf("HelloWorld 3\r\n");
微信图片_20200420131639.png

③ 多个特殊字符一起设置
比如这里我同时设置打印颜色为绿色,字体在终端闪烁:
printf("\033[32;5mHelloWorld\033[0m\r\n");
微信图片_20200420132424.gif

怎么样,在终端打印各种好玩的字符是不是非常简单~自己上手玩玩吧!


收藏 评论0 发布时间:2020-4-20 13:26

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版