如何使用串行UART清除微型通信终端的屏幕



我想从连接到PC/dev/ttyUSB0的UART中清除minicom terminal屏幕。我知道如何在PC上使用快捷方式Ctrl + A then Z and select CCtrl + A then C。现在我想通过使用UART来做同样的事情。如何做到这一点?

@sawds-清晰简洁的答案,谢谢!我也遇到了同样的问题,你的回答解决了它。由于我已经使用printf作为PIC将文本和数据发送到主机终端,所以很容易添加:

printf("%c%c%c%c",0x1B,0x5B,0x32,0x4A);

当终端屏幕被数据弄得一团糟时。

现在我想通过使用UART来做同样的事情。

UART用于简单地传输数据。UART无法访问,也无法清除或控制微型通信终端屏幕/窗口
也许您在问串行连接的远程端如何清除屏幕,例如通过发送命令序列?

该答案将取决于为minicom终端配置了哪个terminal emulation(例如ANSI或VT102(,以及该终端定义是否具有erase screen命令字符串(又名转义序列(
对于ANSI和VT102端子,erase screen转义序列是相同的。

Esc[2J  Erase Display:
Clears the screen and moves the cursor to the home position (line 0, column 0). 

minicom终端接收到(来自远程或启用本地回波时(Esc[2J的4字节字符序列时,该转义序列将被截获,不显示,然后终端窗口将被清除。

这四个字符是:

Esc     the ASCII Escape character, value 0x1B.  
[       the ASCII left square brace character, value 0x5B.  
2       the ASCII character for numeral 2, value 0x32.  
J       the ASCII character for the letter J, value 0x4A.  

参考
ANSI转义序列
ANSI/VT100终端控制转义序列。

通过TTRM支持的控制功能,Escape Sequence'c'可用于重置终端。

printf("%cc",0x1b);

如果目的是只清除当前显示,而不是整个缓冲区:

printf("%c[2J", 0x1b);

接下来,如果您想将光标移回行:列0:0,则:

printf("%c[0;0H", 0x1b);

相关内容

  • 没有找到相关文章

最新更新