奇怪的列号" :0"在VT100终端协议

时间:2015-10-21 03:55:30

标签: terminal console serial-port vt100

我正在解释串口的一些输出。输出位于VT100 protocol。 VT100终端协议使用一些控制字符序列在屏幕上设置光标位置。控制序列如下所示:

  

ESC [行; columnH

例如,

  

ESC [01; 01H表示将光标设置为第1行第1列。

但是当列号超过2位数时,我会看到以下序列。

  

ESC [10;:0H

请注意额外的" "分号后。此控制序列在ESC[10;99H之后,这意味着第10行,第99列。

我的理解是:0 = 100。但是如果列号是200?

2 个答案:

答案 0 :(得分:1)

我不认为这实际上是有效的,如果是的话,那完全是偶然的。传递给CUP(光标位置)命令的参数(以及屏幕坐标中涉及的许多其他参数)仅限于一位或两位数。

在ASCII表格中,数字9后跟:,因此,99代表9 * 10 + 9:0 可能代表10 * 10 + 0100

enter image description here

假设错误支持更高的数字(我不相信的话),你正在寻找20020 * 10 + 0D0({{ 1}}是ASCII表中高于D的字符。)

答案 1 :(得分:1)

不,相关标准没有指定位数限制为 2 ,例如因为VT100可以通过132列来处理24行。

忽略参数中的前导零。可能,OP正在报告一个仅使用两位数的问题(来自一些未提及的程序)。这与终端本身无关(可能在针对终端模拟器开发人员的错误报告的上下文中除外)。

resize程序假设一个终端不大于999乘999将光标定位到屏幕右下角的“过去”。对于那些不依赖多个像素识别字符的人来说,xterm确实使用了一种名为“Unreadable”的字体,这可能会导致更大的屏幕。

顺便说一下,问题中给出的来源不是很好,虽然不是最差 - 参考vt100.netECMA-48