serial ctrl +一个转义序列

时间:2014-02-17 21:18:46

标签: python serial-port escaping pyserial

我正在使用pyserial创建一个串行应用程序。我正在寻找 CTRL + A CTRL + E 的ASCII或ANSI转义序列(转到开头)和分别结束)。我似乎无法在任何地方找到转义码。有谁知道列出代码的资源? CTRL + A CTRL + E 似乎是相当普遍的光标到行首和光标到结束线控键。我不得不相信存在一个转义序列。

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:3)

ASCII字符和ANSI控制代码都没有真正定义名为 CTRL + A 的东西。

然而,ASCII控制字符0-31(其正式具有来自NUL到US的名称)传统上被映射为可打印字符64-95的“控制版本”。所以,0是^ @,1是^ A,2是^ B等等。

ASCIIcontrol character上的维基百科页面提供了更多信息。

所以,^ A是1,^ E是5.


同时

  

CTRL + A CTRL + E 似乎是相当普遍的光标到行和光标的开头到行控制键结束。

他们不是那么普遍。这些是“基本emacs控制键”的一部分,其中有许多Unix终端模拟器和一些基于Unix的GUI应用程序(以及诸如libreadline CLI编辑库和Qt文本小部件之类的东西)支持按照惯例。但是,尝试在DOS提示符或Microsoft Word中点击^ A,它不会到达行的开头。

而且,只需将^ A或^ E发送到ANSI兼容终端,就不一定会将光标移动到行的开头或结尾。要正确执行此操作,您需要实际发送相应的ANSI控制序列。任何ANSI转义码列表(如Wikipedia's)都会显示可用的内容。

不幸的是, 没有正确回答你正在尝试做的事情。 ANSI将整个80x25(或其他)屏幕视为可访问,并且不区分具有内容的字符位置和空白的字符位置。所以,你不能移动到“行尾”,除非你的意思是“第79列”。

而且,如果你正在寻找的是第0和第79列,使用CHA命令('\x1b[0G''\x1b[79G')很容易 - 但并非所有ANSI终端都支持那;特别是DOS ANSI.SYS和任何与之兼容的东西都会忽略它。