【问题标题】:UART, return to the start of the pageUART,返回页首
【发布时间】:2015-02-12 13:52:26
【问题描述】:

是否有可能以某种方式返回页面的开头,而不是行,页面。 显然,使用"hello\r" 之类的内容会写“hello”并返回到行首。

但是当我在二线时呢? 所以在"hello\n" 之后,它会让我进入第二行。 我能不能回到第一行。

根据我进行的研究,您似乎只能在 1 条线路上操作,但我不是 100% 确定,因此希望有人确认这一点。

用 C 语言编程并使用 RealTerm。

【问题讨论】:

  • ^L(即\f)呢?
  • 不,它只是做它描述的事情:新页面我想覆盖第一行
  • 您是否尝试过嵌入 ANSI 转义序列,例如 Cursor Home <ESC>[{ROW};{COLUMN}H,它将光标位置设置为后续文本的开始位置。如果没有提供行/列参数(即<ESC>[H),光标将移动到屏幕左上角的起始位置。见termsys.demon.co.uk/vtansi.htm
  • en.wikipedia.org/wiki/ANSI_escape_code 也是 ANSI 转义码的好地方。

标签: c microcontroller uart 8051


【解决方案1】:

RealTerm 具有 ANSI 终端仿真模式。

找到“显示格式”配置对话框并选择Ansi选项。

现在您可以为 Cursor Home 嵌入转义序列,就像嵌入 换行符一样。

<ESC>[H

当然,&lt;ESC&gt; 表示单个字符 0x1b。你可以这样实现

sprintf(buffer, "%c[Hmy text\n", 27);
transmit(buffer);

或类似的。

【讨论】:

  • 我不能 100% 确定如何在我的程序中实现这一点。我试过 key_string("[H");这显然是错误的,但真的不知道还能做什么。这一切都必须通过我编写的程序来控制。
  • 改进的解释。
  • 不要将"%c" 与常量一起使用。 C 有这样的语法:strcpy(buffer, "\x1B[Hmy text\n");.
  • 它只是打印 [H 到终端
  • 你是否启用了 Ansi 终端仿真?
猜你喜欢
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多