主机应该回显控制字符吗?哪些?

时间:2015-12-29 20:08:19

标签: terminal modem tty stty

我正在构建一个将RS-232与串行终端对话的嵌入式系统,"全双工"样式,所以主机回应终端发送的内容。

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

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

例如,如果我在终端输入^ C,那么^ C应该被主机回显吗? ^ G(钟声)怎么样?等?

1 个答案:

答案 0 :(得分:-1)

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

  • 回显Printables(ASCII 0x20至0x7E)。
  • CR作为CR LF回应(因为终端上的Enter键正常 发送CR,ANSI终端需要CR将光标移动到 左,并将LF移动到下一行。)
  • BS(退格,0x08)和DEL(0x7F)被视为相同而且是 回显为“\ b \ b”(在C语法中) - 即退格,空间, 退格,删除终端上的最后一个字符。

所有其他控制字符回显。 (并不是说他们不是已处理,但他们并没有自动回应。他们所做的事情超出了我所要求的范围。)

我的理由是剩下的控制字符通常意味着做某事,而某事意味着要发生在主机上,而不是发生在终端上。

例如,DC1 / DC3(^ Q / ^ S)通常用作流量控制(“XON / XOFF”) - 将^ S(XOFF)回送到终端是没有意义的,因为目的是流控制主机。将XOFF回送到终端将控制终端,显然不是预期的。所以回应这一点毫无意义。

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

底线 - 仅限echo printables。控制字符作为规则不应该被回应,除非根据具体情况(回车,退格等)逐个进行。

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