色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)中如何實(shí)現(xiàn)打印彩色字符串

Q4MP_gh_c472c21 ? 來(lái)源:小麥大叔 ? 作者:小麥大叔 ? 2021-11-18 11:31 ? 次閱讀

大家好,我是小麥,這次分享一個(gè)小技巧,打印帶顏色編碼的日志,希望對(duì)你有所幫助。

log的重要性

在項(xiàng)目開發(fā)中,日志可以幫助我們調(diào)試和發(fā)現(xiàn)產(chǎn)品中潛藏的問(wèn)題,比如在發(fā)生錯(cuò)誤的時(shí)候,打印相應(yīng)的日志,定位發(fā)生錯(cuò)誤的位置,通常我們需要日志滿足以下這些功能:

  • 不同的日志級(jí)別(TraceWarningInfoErrorfatal);
  • 能夠設(shè)置日志級(jí)別;
  • 基于日志級(jí)別的顏色編碼;
  • 占用空間小;
  • 可配置,可以完全禁用它;
  • 時(shí)間戳;
  • 易于集成;

下面,我們介紹一下如何在串口上打印出不同顏色的字符串。

打印彩色的log

在Stack Overflow上有人提出過(guò)類似的問(wèn)題,如何在終端打印出彩色的字符?

這里給出了一個(gè)很簡(jiǎn)單的C程序demo,我測(cè)試了一下,確實(shí)可以實(shí)現(xiàn)。

#include

#defineANSI_COLOR_RED"x1b[31m"
#defineANSI_COLOR_GREEN"x1b[32m"
#defineANSI_COLOR_YELLOW"x1b[33m"
#defineANSI_COLOR_BLUE"x1b[34m"
#defineANSI_COLOR_MAGENTA"x1b[35m"
#defineANSI_COLOR_CYAN"x1b[36m"
#defineANSI_COLOR_RESET"x1b[0m"

intmain(intargc,charconst*argv[]){

printf(ANSI_COLOR_RED"ThistextisRED!"ANSI_COLOR_RESET"
");
printf(ANSI_COLOR_GREEN"ThistextisGREEN!"ANSI_COLOR_RESET"
");
printf(ANSI_COLOR_YELLOW"ThistextisYELLOW!"ANSI_COLOR_RESET"
");
printf(ANSI_COLOR_BLUE"ThistextisBLUE!"ANSI_COLOR_RESET"
");
printf(ANSI_COLOR_MAGENTA"ThistextisMAGENTA!"ANSI_COLOR_RESET"
");
printf(ANSI_COLOR_CYAN"ThistextisCYAN!"ANSI_COLOR_RESET"
");

return0;
}

最終編譯之后運(yùn)行得到的結(jié)果如下,發(fā)現(xiàn)打印的字符顏色發(fā)生了變化。

ANSI轉(zhuǎn)義序列

ANSI轉(zhuǎn)義序列(ANSI escape sequences)是一種帶內(nèi)信號(hào)的轉(zhuǎn)義序列標(biāo)準(zhǔn),用于控制視頻文本終端上的光標(biāo)位置顏色其他選項(xiàng)。在文本中嵌入確定的字節(jié)序列,大部分以ESC轉(zhuǎn)義字符"["字符開始,終端會(huì)把這些字節(jié)序列解釋為相應(yīng)的指令,而不是普通的字符編碼

所以,這里我們查了一下ascii碼表,可以發(fā)現(xiàn)ESC的碼值是十進(jìn)制的27,也就是十六進(jìn)制的0x1b,具體如下所示:

3fc5e212-481b-11ec-b939-dac502259ad0.pngascii碼表

所以轉(zhuǎn)義序列的格式如下:

401d621c-481b-11ec-b939-dac502259ad0.png轉(zhuǎn)自wiki

可以參考文檔:https://invisible-island.net/xterm/ctlseqs/ctlseqs.html

所以這里簡(jiǎn)單舉個(gè)例子,設(shè)置不同的背景色:

#include

intmain(){

for(inti=0;i256;i++){

printf("x1b[48;5;%dm%03dx1b[0m",i,i);

if(i%10==0){
printf("
");
}
}
return0;
}

重點(diǎn)是這一句:printf("x1b[48;5;%dm %03d x1b[0m", i, i);簡(jiǎn)單分析一下:

  • 其中x1b[ 是起始指令,后面的48表示設(shè)置背景色,38是前景色;
  • 48后面通常會(huì)跟一個(gè);5;,這個(gè)是文檔中規(guī)定的,第一個(gè)%d,是設(shè)置色號(hào),最后以m結(jié)尾;
403fcbd6-481b-11ec-b939-dac502259ad0.png參數(shù)設(shè)置
  • 第二個(gè)%03d是中間需要顯示的文本;
  • 最后以x1b[0m結(jié)束。

測(cè)試系統(tǒng)是Ubuntu 1804,最終的運(yùn)行結(jié)果如下所示:

單片機(jī)中實(shí)現(xiàn)

單片機(jī)可以將日志通過(guò)串口打印出來(lái),這時(shí)候需要顯示彩色字符,需要一個(gè)前提,就是串口終端軟件需要支持解析ANSI轉(zhuǎn)義序列

下面我做了簡(jiǎn)單的實(shí)驗(yàn),通過(guò)STM32的串口,發(fā)送相應(yīng)的字符,然后在PC端使用MobaXterm軟件打開串口并接收數(shù)據(jù);因?yàn)檫@個(gè)軟件是支持ANSI序列的,所以最終可以顯示出不同顏色的字符串。具體如下所示:

總結(jié)

本文介紹了如何打印彩色字符串,其中簡(jiǎn)單介紹了ANSI轉(zhuǎn)義序列,并且給出了幾個(gè)小的實(shí)驗(yàn)結(jié)果,并在單片機(jī)上發(fā)送字符串到PC上,使用xterm串口終端,可以正常顯示設(shè)置前景色的字符串,結(jié)果符合預(yù)期。
責(zé)任編輯:haq


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6039

    文章

    44583

    瀏覽量

    636530
  • 終端
    +關(guān)注

    關(guān)注

    1

    文章

    1145

    瀏覽量

    29929
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    10656

原文標(biāo)題:?jiǎn)纹瑱C(jī)打印日志還能這么玩?一招秀翻~

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    字符串在數(shù)據(jù)庫(kù)的存儲(chǔ)方式

    數(shù)據(jù)庫(kù)是現(xiàn)代信息技術(shù)存儲(chǔ)和管理數(shù)據(jù)的核心組件。字符串作為最常見(jiàn)的數(shù)據(jù)類型之一,在數(shù)據(jù)庫(kù)的存儲(chǔ)方式對(duì)其性能和可擴(kuò)展性有著重要影響。 數(shù)據(jù)類型 固定長(zhǎng)度字符串 :如CHAR類型,它為每
    的頭像 發(fā)表于 01-07 15:41 ?107次閱讀

    字符串在編程的應(yīng)用實(shí)例

    常以字符串的形式出現(xiàn)。例如,在命令行程序,用戶輸入的命令和參數(shù)都是字符串。 輸出信息 :程序也經(jīng)常需要向用戶顯示信息,這些信息同樣可以以字符串的形式呈現(xiàn)。例如,
    的頭像 發(fā)表于 01-07 15:33 ?95次閱讀

    字符串字符數(shù)組的區(qū)別

    在編程語(yǔ)言中,字符串字符數(shù)組是兩種基本的數(shù)據(jù)結(jié)構(gòu),它們都用于存儲(chǔ)和處理文本數(shù)據(jù)。盡管它們?cè)诠δ苌嫌幸欢ǖ闹丿B,但在內(nèi)部表示、操作方式和使用場(chǎng)景上存在顯著差異。 1. 內(nèi)部表示 字符串 字符串
    的頭像 發(fā)表于 01-07 15:29 ?172次閱讀

    字符串反轉(zhuǎn)的實(shí)現(xiàn)方式

    在編程字符串反轉(zhuǎn)是一個(gè)基礎(chǔ)而重要的操作,它涉及到將一個(gè)字符串字符順序顛倒過(guò)來(lái)。這個(gè)操作在多種編程語(yǔ)言中都有不同的
    的頭像 發(fā)表于 01-07 15:27 ?132次閱讀

    字符串處理方法 字符串轉(zhuǎn)數(shù)字的實(shí)現(xiàn)

    在編程,將字符串轉(zhuǎn)換為數(shù)字是一個(gè)常見(jiàn)的需求。不同的編程語(yǔ)言有不同的方法來(lái)實(shí)現(xiàn)這一功能。以下是一些常見(jiàn)編程語(yǔ)言中的字符串轉(zhuǎn)數(shù)字的實(shí)現(xiàn)方法:
    的頭像 發(fā)表于 01-07 15:26 ?104次閱讀

    base64字符串轉(zhuǎn)換為二進(jìn)制文件

    Base64是一種編碼方法,用于將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為ASCII字符串。這種編碼通常用于在不支持二進(jìn)制數(shù)據(jù)的系統(tǒng)傳輸數(shù)據(jù),例如電子郵件或網(wǎng)頁(yè)。將Base64字符串轉(zhuǎn)換為二進(jìn)制文件的過(guò)程相對(duì)簡(jiǎn)單,但需要
    的頭像 發(fā)表于 11-10 10:55 ?1372次閱讀

    labview字符串數(shù)組轉(zhuǎn)化為數(shù)值數(shù)組

    在LabVIEW,將字符串數(shù)組轉(zhuǎn)換為數(shù)值數(shù)組是一項(xiàng)常見(jiàn)的任務(wù),尤其是在處理數(shù)據(jù)采集、信號(hào)處理或用戶輸入時(shí)。 1. 理解LabVIEW的數(shù)據(jù)類型 在開始之前,了解LabVIEW的數(shù)據(jù)類型是非
    的頭像 發(fā)表于 09-04 17:47 ?2553次閱讀

    labview字符串如何轉(zhuǎn)換為16進(jìn)制字符串

    在LabVIEW,將字符串轉(zhuǎn)換為16進(jìn)制字符串是一個(gè)常見(jiàn)的需求,尤其是在處理數(shù)據(jù)通信和硬件接口時(shí)。LabVIEW提供了多種方法來(lái)實(shí)現(xiàn)這一轉(zhuǎn)換,包括使用內(nèi)置函數(shù)、編寫VI(Virtua
    的頭像 發(fā)表于 09-04 15:54 ?2713次閱讀

    labview如何實(shí)現(xiàn)字符串換行

    1. 字符串換行的基本概念 在LabVIEW字符串換行通常指的是在字符串插入換行符,使得字符串
    的頭像 發(fā)表于 09-04 15:47 ?1824次閱讀

    labview如何實(shí)現(xiàn)字符串選擇輸出

    在LabVIEW實(shí)現(xiàn)字符串選擇輸出是一項(xiàng)常見(jiàn)的任務(wù),它涉及到字符串處理、條件判斷和用戶界面設(shè)計(jì)等多個(gè)方面。由于LabVIEW是一種圖形化編程語(yǔ)言,其編程方式與傳統(tǒng)的文本編程語(yǔ)言有所不
    的頭像 發(fā)表于 09-04 15:44 ?1007次閱讀

    labview中常用的字符串函數(shù)有哪些?

    在LabVIEW,常用的字符串函數(shù)廣泛覆蓋了對(duì)字符串的各種操作,包括但不限于格式化、搜索、替換、連接、計(jì)算長(zhǎng)度等。以下是一些常用的字符串函數(shù)及其簡(jiǎn)要說(shuō)明:
    的頭像 發(fā)表于 09-04 15:43 ?827次閱讀

    labview字符串的四種表示各有什么特點(diǎn)

    。在LabVIEW字符串是一種基本的數(shù)據(jù)類型,用于表示文本信息。字符串在LabVIEW中有多種表示方式,每種方式都有其特定的應(yīng)用場(chǎng)景和特點(diǎn)。以下是對(duì)LabVIEW四種
    的頭像 發(fā)表于 09-04 15:40 ?622次閱讀

    rtt studio終端無(wú)法打印字符串是怎么回事?

    求助:rtt studio新創(chuàng)建的項(xiàng)目使用自帶終端可以打印字符串,但是將字符串輸出語(yǔ)句注釋掉再改回來(lái)終端就無(wú)法打印了,并且msh也未顯示也無(wú)法使用輸入,使用其他的串口調(diào)試助手看到了rtt的界面以及
    發(fā)表于 07-05 07:29

    鴻蒙TypeScript學(xué)習(xí)第10天:【String(字符串)】

    String 對(duì)象用于處理文本(字符串)。
    的頭像 發(fā)表于 04-08 14:32 ?844次閱讀
    鴻蒙TypeScript學(xué)習(xí)第10天:【String(<b class='flag-5'>字符串</b>)】

    C語(yǔ)言字符串編譯函數(shù)介紹

    在C語(yǔ)言中,字符串實(shí)際上是使用null字符O'終止的一維字符數(shù)組。因此,一個(gè)以null結(jié)尾的字符串,包含了組成字符串
    的頭像 發(fā)表于 03-07 16:18 ?526次閱讀
    C語(yǔ)言<b class='flag-5'>字符串</b>編譯函數(shù)介紹
    主站蜘蛛池模板: 精品人妻一区二区三区视频53| 午夜剧场1000| 欧美三级不卡在线观线看| 日本xxxxxxx| 性欧美video另类hd高清| 在线观看免费亚洲| 成人国产精品玖玖热色欲| 好男人好资源视频高清| 欧美xxxav| 亚洲精品成人久久久影院| 99re.05久久热最新地址| 国产精品v片在线观看不卡| 久久综合狠狠综合久久综合88| 日韩欧美视频一区二区| 伊人亚洲AV久久无码精品| 成人久久欧美日韩一区二区三区| 精品九九视频| 日本毛片久久国产精品| 亚洲专区区免费| 第一精品福利导福航| 久久久精品日本一区二区三区| 日本久久久久亚洲中字幕 | 九九精品视频在线播放| 青青草原91| 野花韩国高清完整版在线观看5| 边做边爱BD免费看片| 久久看片网| 天天射天天爱天天干| 99久久国产综合精品网成人影院| 国产亚洲色婷婷久久精品99| 人成片在线观看亚洲无遮拦| 月夜直播免费看| 国产麻豆福利AV在线观看| 欧美人禽Zozo动人物杂交| 亚洲专区区免费| 国产精品永久AV无码视频| 欧美最猛性XXXXX肛交| 在线va无卡无码高清| 国产亚洲综合视频| 色妞色视频一区二区三区四区| 40分钟超爽大片黄|