VT100控制码

    最近有个临时的小任务,需要编一个命令行界面,需要用到控制串口打印在指定位置,并更新指定位置的数据显示,所以需要用到VT100控制码,所以特意整理了一些资料。

    VT100  一个终端类型定义,VT100控制码 用来在终端扩展显示的代码。比如果终端上任意坐标用 不同的颜色显示字符。

  所有的控制符  \033打头 (即ESC 的ASCII码)用输出字符语句来输出。可以在命令行用echo 命 令,或者在C程序中用printf 来输出VT100 的控制字符。

具体格式有两种,

         一种数字形式,

  \033[<数字>m .

   如 \033[40m ,表示让后面字符输出用背景黑色输出 \033[0m表示取消前面的设置。

        另一种 控制字符形式。

  \033[K 清除从光标到行尾的内容

  \033[nC 光标右移n 行

输出时, 也可以用 ^[来代替.

VT100 控制码

VT100控制码归类如下。

   \033[0m 关闭所有属性

    \033[1m 设置高亮度

    \033[4m 下划线

    \033[5m 闪烁

    \033[7m 反显

    \033[8m 消隐

    \033[30m -- \033[37m 设置前景色

    \033[40m -- \033[47m 设置背景色

    \033[nA 光标上移n 行

    \033[nB 光标下移n 行

    \033[nC 光标右移n 行

    \033[nD 光标左移n 行

    \033[y;xH设置光标位置

    \033[2J 清屏

    \033[K 清除从光标到行尾的内容

    \033[s 保存光标位置

    \033[u 恢复光标位置

    \033[?25l 隐藏光标

    \033[?25h 显示光标

VT100 关于颜色的说明. 
VT100 的颜色输出分为,注意要同时输出前景的字符颜色和背景颜色。

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

     40:黑

     41:深红

     42:绿

     43:黄色

     44:蓝色

     45:紫色

     46:深绿

     47:白色

     字颜色:30-----------39

     30:黑

     31:红

     32:绿

     33:黄

     34:蓝色

     35:紫色

     36:深绿

     37:白色

这样输出一个字符串比较完整如下

    echo "\033[字背景颜色;字体颜色m 字符串\033[0m" 
例:

    echo "\033[41;36m something here \033[0m"

VT100 的编程定义

象VT100这种固定又难定的编程完全可以用宏定义来简化编程使用.

有以下例子:

#include <stdio.h>
#include <unistd.h>

void printf_info(int x)
{
	printf("####################################\n");
	printf("\n");
	printf("	abc:\033[;31m %d\033[0m\n", x);
	printf("\n");
	printf("####################################\n");
	printf("\033[5A");
}

int main(int argc, char* argv[])
{
	int x = 0;
	printf("\033[?25l");
	while (1)
	{
		sleep(1);
		printf_info(x++);
	}
	return 0;
}

实现效果如下:



猜你喜欢

转载自blog.csdn.net/liufei191010/article/details/81015445