user-0 提问: 字符串常量的定义看不懂，求助

回复:
user: user-1
content: 终端控制字符

user: user-2
content: /* VT100 escape sequence */ #define ESC_ATTR_RESET  "\033[0m"        // 恢复 #define ESC_ATTR_BG_RED "\033[41m"   //红 #define ESC_ATTR_BG_GRN "\033[42m"  // 绿 #define ESC_ATTR_BG_BLU "\033[44m"   // 蓝 .... 用putty试了下

user: user-2
content: 应该是终端显示的控制符 (指今) \033 指令入口   [0m  , [41m  ... 等这些是指今码 用来控制显示终端的 颜色呀。什么的  //============================== 就像 \n  控制换行,..这种所有终端都支持

user: user-3
content: 这些是 VT100 的控制字符, 就是个规定, ESC 1A 是光标上移一行貌似.

user: user-0
content: 举例来说，"\033[1A"到底代表什么意思呢？我知道'\033'代表控制字符ESC，那后面的"[1A"代表什么意思呢？ 如果用printf()打印这个字符串，它会用来产生什么效果呢？

user: user-0
content: 哦，可能我没有说清楚。我不明白那些字符串常量代表什么含义。  他们是用于打印的。比如： printFromISR("\r\n" ESC_CUR_UP ESC_CLR_END "                              Alarm at 27(Thu) 12:00 ");

user: user-4
content: 就是基本的宏定义啊，有啥地方不懂呢

user: user-0
content: 谢谢回复。 我上网搜了一点资料，有一点点明白了。  ANSI Escape sequences - VT100 / VT52 (ANSI Escape codes) ANSI Escape sequences  |  VT100 / VT52 ANSI escape sequences  |  VT100 User Guide    This document describes how to control a VT100 terminal.  ANSI escape sequence is a sequence of ASCII characters, the first two of which are the ASCII "Escape" character 27 (1Bh) and the left-bracket character " [ " (5Bh). The character or characters following the escape and left-bracket characters specify an alphanumeric code that controls a keyboard or display function.  Information is also available int the VT100 User Guide.    Esc[20h 	Set new line mode 	LMN  Esc[?1h 	Set cursor key to application 	DECCKM  none 	Set ANSI (versus VT52) 	DECANM  Esc[?3h 	Set number of columns to 132 	DECCOLM  Esc[?4h 	Set smooth scrolling 	DECSCLM  Esc[?5h 	Set reverse video on screen 	DECSCNM  Esc[?6h 	Set origin to relative 	DECOM  Esc[?7h 	Set auto-wrap mode 	DECAWM  Esc[?8h 	Set auto-repeat mode 	DECARM  Esc[?9h 	Set interlacing mode 	DECINLM    Esc[20l 	Set line feed mode 	LMN  Esc[?1l 	Set cursor key to cursor 	DECCKM  Esc[?2l 	Set VT52 (versus ANSI) 	DECANM  Esc[?3l 	Set number of columns to 80 	DECCOLM  Esc[?4l 	Set jump scrolling 	DECSCLM  Esc[?5l 	Set normal video on screen 	DECSCNM  Esc[?6l 	Set origin to absolute 	DECOM  Esc[?7l 	Reset auto-wrap mode 	DECAWM  Esc[?8l 	Reset auto-repeat mode 	DECARM  Esc[?9l 	Reset interlacing mode 	DECINLM    Esc= 	Set alternate keypad mode 	DECKPAM  Esc> 	Set numeric keypad mode 	DECKPNM    Esc(A 	Set United Kingdom G0 character set 	setukg0  Esc)A 	Set United Kingdom G1 character set 	setukg1  Esc(B 	Set United States G0 character set 	setusg0  Esc)B 	Set United States G1 character set 	setusg1  Esc(0 	Set G0 special chars. & line set 	setspecg0  Esc)0 	Set G1 special chars. & line set 	setspecg1  Esc(1 	Set G0 alternate character ROM 	setaltg0  Esc)1 	Set G1 alternate character ROM 	setaltg1  Esc(2 	Set G0 alt char ROM and spec. graphics 	setaltspecg0  Esc)2 	Set G1 alt char ROM and spec. graphics 	setaltspecg1    EscN 	Set single shift 2 	SS2  EscO 	Set single shift 3 	SS3    Esc[m 	Turn off character attributes 	SGR0  Esc[0m 	Turn off character attributes 	SGR0  Esc[1m 	Turn bold mode on 	SGR1  Esc[2m 	Turn low intensity mode on 	SGR2  Esc[4m 	Turn underline mode on 	SGR4  Esc[5m 	Turn blinking mode on 	SGR5  Esc[7m 	Turn reverse video on 	SGR7  Esc[8m 	Turn invisible text mode on 	SGR8    Esc[Line;Liner 	Set top and bottom lines of a window 	DECSTBM    Esc[ValueA 	Move cursor up n lines 	CUU  Esc[ValueB 	Move cursor down n lines 	CUD  Esc[ValueC 	Move cursor right n lines 	CUF  Esc[ValueD 	Move cursor left n lines 	CUB  Esc[H 	Move cursor to upper left corner 	cursorhome  Esc[;H 	Move cursor to upper left corner 	cursorhome  Esc[Line;ColumnH 	Move cursor to screen location v,h 	CUP  Esc[f 	Move cursor to upper left corner 	hvhome  Esc[;f 	Move cursor to upper left corner 	hvhome  Esc[Line;Columnf 	Move cursor to screen location v,h 	CUP  EscD 	Move/scroll window up one line 	IND  EscM 	Move/scroll window down one line 	RI  EscE 	Move to next line 	NEL  Esc7 	Save cursor position and attributes 	DECSC  Esc8 	Restore cursor position and attributes 	DECSC    EscH 	Set a tab at the current column 	HTS  Esc[g 	Clear a tab at the current column 	TBC  Esc[0g 	Clear a tab at the current column 	TBC  Esc[3g 	Clear all tabs 	TBC    Esc#3 	Double-height letters, top half 	DECDHL  Esc#4 	Double-height letters, bottom half 	DECDHL  Esc#5 	Single width, single height letters 	DECSWL  Esc#6 	Double width, single height letters 	DECDWL    Esc[K 	Clear line from cursor right 	EL0  Esc[0K 	Clear line from cursor right 	EL0  Esc[1K 	Clear line from cursor left 	EL1  Esc[2K 	Clear entire line 	EL2    Esc[J 	Clear screen from cursor down 	ED0  Esc[0J 	Clear screen from cursor down 	ED0  Esc[1J 	Clear screen from cursor up 	ED1  Esc[2J 	Clear entire screen 	ED2    Esc5n 	Device status report 	DSR  Esc0n 	Response: terminal is OK 	DSR  Esc3n 	Response: terminal is not OK 	DSR    Esc6n 	Get cursor position 	DSR  EscLine;ColumnR 	Response: cursor is at v,h 	CPR    Esc[c 	Identify what terminal type 	DA  Esc[0c 	Identify what terminal type (another) 	DA  Esc[?1;Value0c 	Response: terminal type code n 	DA    Escc 	Reset terminal to initial state 	RIS    Esc#8 	Screen alignment display 	DECALN  Esc[2;1y 	Confidence power up test 	DECTST  Esc[2;2y 	Confidence loopback test 	DECTST  Esc[2;9y 	Repeat power up test 	DECTST  Esc[2;10y 	Repeat loopback test 	DECTST    Esc[0q 	Turn off all four leds 	DECLL0  Esc[1q 	Turn on LED #1 	DECLL1  Esc[2q 	Turn on LED #2 	DECLL2  Esc[3q 	Turn on LED #3 	DECLL3  Esc[4q 	Turn on LED #4 	DECLL4      Codes for use in VT52 compatibility mode Esc< 	Enter/exit ANSI mode (VT52) 	setansi    Esc= 	Enter alternate keypad mode 	altkeypad  Esc> 	Exit alternate keypad mode 	numkeypad    EscF 	Use special graphics character set 	setgr  EscG 	Use normal US/UK character set 	resetgr    EscA 	Move cursor up one line 	cursorup  EscB 	Move cursor down one line 	cursordn  EscC 	Move cursor right one char 	cursorrt  EscD 	Move cursor left one char 	cursorlf  EscH 	Move cursor to upper left corner 	cursorhome  EscLineColumn 	Move cursor to v,h location 	cursorpos(v,h)  EscI 	Generate a reverse line-feed 	revindex    EscK 	Erase to end of current line 	cleareol  EscJ 	Erase to end of screen 	cleareos    EscZ 	Identify what the terminal is 	ident  Esc/Z 	Correct response to ident 	identresp      VT100 Special Key Codes These are sent from the terminal back to the computer when the particular key is pressed. Note that the numeric keypad keys send different codes in numeric mode than in alternate mode. See escape codes above to change keypad mode.    Function Keys:  EscOP	PF1 EscOQ	PF2 EscOR	PF3 EscOS	PF4   Arrow Keys:    	Reset 	Set  up 	EscA	EscOA down 	EscB	EscOB right 	EscC	EscOC left 	EscD	EscOD   Numeric Keypad Keys:  EscOp	0  EscOq	1  EscOr	2  EscOs	3  EscOt	4  EscOu	5  EscOv	6  EscOw	7  EscOx	8  EscOy	9  EscOm	-(minus)  EscOl	,(comma)  EscOn	.(period)  EscOM	^M    Printing:  Esc[i 	Print Screen 	Print the current screen  Esc[1i	Print Line 	Print the current line  Esc[4i	Stop Print Log 	Disable log  Esc[5i	Start Print Log	Start log; all received text is echoed to a printer