log_i\log_e\log_d函数最后打印出来的颜色是怎么来的?

发布于 2021-03-25 06:29:24

利用msh打印的时候,log的不同函数能够打印出不同颜色的字符,我有个问题:
log的函数都调用rt_kprintf,这个颜色是怎么设置出来的?在什么位置

查看更多

关注者
0
被浏览
187
HappyTime
HappyTime 2021-03-25

楼主搜一下终端颜色代码,log相关的api最终会在打印的时候添加这些代码。

例子:
a = "033[41;34m %s 033[0m"
rt_kprintf(a)

41的位置是背景颜色,34的位置是字体颜色

背景颜色号
字背景颜色范围:40----49

40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
字体颜色号
字颜色:30-----------39

30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色

ascii 控制码
33[0m 关闭所有属性
33[1m 设置高亮度
33[4m 下划线
33[5m 闪烁
33[7m 反显
33[8m 消隐
33[30m -- 33[37m 设置前景色
33[40m -- 33[47m 设置背景色
33[nA 光标上移n行
33[nB 光标下移n行
33[nC 光标右移n行
33[nD 光标左移n行
33[y;xH设置光标位置
33[2J 清屏
33[K 清除从光标到行尾的内容
33[s 保存光标位置
33[u 恢复光标位置
33[?25l 隐藏光标
33[?25h 显示光标

5 个回答
whj467467222
whj467467222 认证专家 2021-03-25

配合上面的回答,RTT 的这些定义在 rtdbg.h

/*
 * The color for terminal (foreground)
 * BLACK    30
 * RED      31
 * GREEN    32
 * YELLOW   33
 * BLUE     34
 * PURPLE   35
 * CYAN     36
 * WHITE    37
 */
#ifdef DBG_COLOR
#define _DBG_COLOR(n)        rt_kprintf("\033["#n"m")
#define _DBG_LOG_HDR(lvl_name, color_n)                    \
    rt_kprintf("\033["#color_n"m["lvl_name"/"DBG_SECTION_NAME"] ")
#define _DBG_LOG_X_END                                     \
    rt_kprintf("\033[0m\n")
#else
#define _DBG_COLOR(n)
#define _DBG_LOG_HDR(lvl_name, color_n)                    \
    rt_kprintf("["lvl_name"/"DBG_SECTION_NAME"] ")
#define _DBG_LOG_X_END                                     \
    rt_kprintf("\n")
#endif /* DBG_COLOR */
flashman2002
flashman2002 2021-03-25

具体颜色显示应该在ulog.c中定义的:

#ifdef ULOG_USING_COLOR
/**
 * CSI(Control Sequence Introducer/Initiator) sign
 * more information on https://en.wikipedia.org/wiki/ANSI_escape_code
 */
#define CSI_START                      "\033["
#define CSI_END                        "\033[0m"
/* output log front color */
#define F_BLACK                        "30m"
#define F_RED                          "31m"
#define F_GREEN                        "32m"
#define F_YELLOW                       "33m"
#define F_BLUE                         "34m"
#define F_MAGENTA                      "35m"
#define F_CYAN                         "36m"
#define F_WHITE                        "37m"
HeFeng123
HeFeng123 2021-03-25

换成串口调试助手打印出来就只有白色了,有人能讲解一下么

mii
mii 2021-03-26

这部分跟LINUX入门内容一样,都是有控制字符来控制,显示颜色要工具支持,如PUTTY,XSHELL等流行工具都可以显示正常。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览