HWUT - 有选择地从读取缓冲区打印到 OUT 文件夹中的 .exe 文件

HWUT - selectively printing from read buffer into .exe file in OUT folder

我正在从串口接收数据。我使用 HWUT 来比较我的测试结果。接收缓冲区的内容不能直接用于 GOOD 和 OUT 结果的比较。因为 OUT 总是会有不必要的命令提示符、输入和其他内容。我正在寻找 select 必须从读取缓冲区写入 OUT 文件的内容。例如下面的例子

←[36m
A> target cmd
                ←[36m
{t=3883.744541 s} Received data 
A>             result :  1
                       bytes read 518Closing serial port...OK

我希望输出文件只有 'result : 1'.
当我检查代码时,messages.py 似乎正在打印到标准输出。但不确定是否用于打印到 OUT 文件中。如何实现?

您打印到 'stdout' 的任何内容都应该出现在 "OUT/*" 文件中。如果没有,那么这与通过串行线路接收无关。以下是我要分析的内容:

  1. 在你的连接器应用程序中必须有类似

    的东西

    receive_n = receive(.., &buffer[0], Size); buffer[receive_n] = '[=10=]'; /* terminating zero */ printf("%s", &buffer[0]);

    如果是这样,那么

  2. 并行写入日志文件。

    static log_fh = fopen("tmp.log", "wb"); ... printf("%s", &buffer[0]); fwrite((void*)buffer, 1, received_n, log_fh);

  3. 比较'tmp.log'与OUT中的文件。

    如有差异,应归咎于 HWUT。

  4. 在写入之前检查输出。

    if( my_condition(缓冲区, received_n) ) printf("%s", &buffer[0]);

HWUT 有一个内部基础结构来 post 处理测试输出,但在撰写本文时没有记录,因此不可靠。

编辑 TEST 目录中的文件 "hwut-info.dat"。

These R my Tests on Something Important (Title)
-------------------------------------------------------
--not  *.exe
bash   execute-this.sh
-------------------------------------------------------

--not *.exe 确保 HWUT 不会 执行您编译的 *.exe 文件。 bash execute-this.sh 行让 HWUT 将文件 execute-this.sh 视为测试应用程序并使用 'bash' 调用它。

execute-this.sh 中,您可能想要制作您的应用程序,执行它并过滤输出,即

#! bash
make my-test.exe
./my-test.exe | awk ' /^A>/ ' 

将只打印那些以 'A>' 开头的行。 grepawk 是你的朋友,在这里。你可能想熟悉这两个。

或者,您可以直接在连接应用程序中进行过滤。