1

我正在构建一个嵌入式系统,它将 RS-232 与串行终端进行通信,“全双工”风格,因此主机会响应终端发送的内容。

我知道通常会回显可打印文件(至少 ASCII 0x20 到 0x7E),但是在这种情况下通常会回显哪些控制字符(如果有)?

是否有一些 Posix 或其他标准?Linux是如何做到的?

例如,如果我在终端输入 ^C,是否应该由主机回显 ^C?^G(铃)呢?ETC?

4

1 回答 1

-1

我会尝试回答我自己的问题。这是我打算做的事情:

  • 可打印文件(ASCII 0x20 到 0x7E)被回显。
  • CR 回显为 CR LF(因为终端上的 Enter 键通常会发送 CR,而 ANSI 终端需要 CR 将光标向左移动,LF 将光标移动到下一行)。
  • BS (backspace, 0x08) 和 DEL (0x7F) 被同等对待,并被回显为“\b \b”(在 C 语法中)——即退格、空格、退格,以擦除终端上的最后一个字符。

回显所有其他控制字符。(并不是说它们没有被处理,但它们不会自动回显。它们所做的超出了我所询问的范围。)

我的理由是,剩余的控制字符通常是为了做某事,而某事是在主机上发生的,而不是在终端上发生的。

例如 DC1/DC3 (^Q/^S) 通常用作流量控制 ("XON/XOFF") - 将 ^S (XOFF) 回显到终端是没有意义的,因为目的是流控主机。将 XOFF 回显到终端将流控制终端,显然不是预期的。所以附和这个是没有意义的。

同样,不应回显终端发送的 ANSI 转义序列(光标上/下/左/右等)。

底线 - 仅回显打印。通常不应回显控制字符,除非根据其功能(回车、退格等)逐个处理。

我想评论这是否是正确的做法(以及为什么)。

于 2015-12-30T04:31:27.973 回答