Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tcl 如何操作expect out缓冲区_Tcl_Expect - Fatal编程技术网

Tcl 如何操作expect out缓冲区

Tcl 如何操作expect out缓冲区,tcl,expect,Tcl,Expect,我已经在Tcl Expect中编写了一个应用程序,它产生了minicom和 通过串行端口发送和接收数据。有时我看到 应用程序接收控制字符和人类可读的数据。 互联网上的搜索告诉我控制字符是 只有VT终端代码。然而,我找不到解决办法 过滤掉终端代码 我附上了预期缓冲区和实际缓冲区的样本 预期:- Microsoft Windows [Version 6.2.9200](c) 2012 Microsoft Corporation. All rights reserved. C:\Windows\sys

我已经在Tcl Expect中编写了一个应用程序,它产生了minicom和 通过串行端口发送和接收数据。有时我看到 应用程序接收控制字符和人类可读的数据。 互联网上的搜索告诉我控制字符是 只有VT终端代码。然而,我找不到解决办法 过滤掉终端代码

我附上了预期缓冲区和实际缓冲区的样本

预期:-

Microsoft Windows [Version 6.2.9200](c) 2012 Microsoft Corporation. All rights reserved. C:\Windows\system32> Microsoft Windows[版本6.2.9200](c)2012 Microsoft Corporation。版权所有。C:\Windows\system32> 实际:-

[1;1H[37m[40m [2;1H [3;1H [4;1H [5;1H [6;1H [7;1H [8;1H [9;1H [10;1H [11;1H [12;1H [13;1H [14;1H [15;1H [16;1H [17;1H [18;1H [19;1H [20;1H [21;1H [22;1H [23;1H [24;1H [1;1HMicrosoft Windows [Version 6.2.9200][2;1H(c) 2012 Microsoft Corporation. All rights reserved.[4;1HC:Windowssystem32> [1;1H[37m[40m[2;1H[3;1H[4;1H[5;1H[6;1H[7;1H[8;1H[9;1H[10;1H[11;1H[12;1H[13;1H[14;1H[15;1H[16;1H[17;1H[18;1H[19;1H[20;1H[21;1H[23;1H[24;1H[1;1H[1;1H[1;1H软Windows[6.2.9200][2版;1H(c)2012年微软公司。保留所有权利。[4;1HC:Windowssystem32> 在进行初始匹配时,您不想将其过滤掉;它们对于确保您获得所需的内容(提示/横幅)非常有用。但在提取意义时,您肯定会首先将其过滤掉。幸运的是,使用
regsub
magic:

regsub -all {\u00AB\[[\d;]*[A-Za-z]} $expect_out(buffer) "" filtered
它将Expect match buffer(如果有更好的候选项,请选择其他内容)中的所有转义序列(ESC(
\u00AB
)替换为空字符串,然后将结果存储在
筛选的
变量中