我想从连接到PC/dev/ttyUSB0
的UART中清除minicom terminal
屏幕。我知道如何在PC上使用快捷方式Ctrl + A then Z and select C
或Ctrl + 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);