如何重定向Tornado / VXWorks shell输出?
最近,我一直在使用Tornado 2中的shell进行嵌入式C / C ++项目的工作,以此调试套件中的情况。这种方法的唯一问题是,它是一个复杂的系统,因此具有相当大的输出量。每当有一些新信息到达时,龙卷风都会"有帮助地"滚动窗口,这意味着如果发现错误,它会以太快的速度消失在现场,以至于无法看到。每次向上滚动查看时,系统都会添加更多信息,因此唯一的查看方法是断开硬件连接。
我想知道是否有人可以重定向龙卷风的输出?
我希望有一种方法可以通过一个小型python应用程序将其全部记录下来,以便可以将过滤器应用于传入的信息。我尝试连接到Tornado进程,但是包含信息的窗口不是标准的CEditCtrl,因此以这种方式提取文本是死路一条。
有任何想法吗?
[编辑]我应该提到我们只运行Tornado 2.1.0,并且升级到更新版本是我无法控制的。
[Edit2]根据WinID,在Tornado中讨论的窗口是'AfxFrameOrView42'。
解决方案
我假设我们正在使用主机外壳执行此操作。
如果通过从外壳启动测试(例如" runTest()")来运行测试,则可以使用重定向运算符(>)将功能的输出发送到主机上的文本文件。
> runTest() > mytestResults.txt
这会将runTest生成的所有输出保存到文件mytestResults.txt中
如果我们想一直捕获屏幕上的所有内容,我将不得不对其进行更多的研究。
主机外壳具有内置的录制功能。
有3个环境变量可用(在6.x中不可用,在5.x中不可用):
RECORD(开/关):控制外壳的录制
RECORD_TYPE(输入/输出/全部):确定要录制的内容
RECORD_FILE:保存内容的文件名。
我们可以使用?shConfig命令来配置shell环境变量。
?shConfig本身显示变量。
这是我设置我的方法:
-> ?shConfig ... RECORD = off RECORD_FILE = C:/test.txt RECORD_TYPE = output ... -> ?shConfig RECORD_TYPE all -> ?shConfig RECORD_FILE myData.txt -> ?shConfig RECORD on Started recording commands in 'myData.txt'.
rlogin vxWorks目标tee重定向输出.txt
这是另一种可能的方式:
-> saveFd = open("myfile.txt",0x102, 0777 ) -> oldFd = ioGlobalStdGet(1) -> ioGlobalStdSet(1, saveFd) -> runmytest() ... -> ioGlobalStdSet(1, oldFd)
这会将所有stdout活动重定向到我们打开的文件。
我们可能需要使用open的文件名来使其在主机上写入(例如,使用" host:/myfile.txt"或者类似的名称)