我正在从串行端口接收数据。我用huut来比较我的测试结果。接收缓冲区的内容不能直接用于比较GOOD和OUT结果。因为OUT总是会有不必要的命令提示、输入和其他东西。我正在寻找选择什么必须从读取缓冲区写入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/*"文件中。如果没有,那么这将与通过串行线接收无关。下面是我要做的分析:
-
在您的连接器应用程序中必须有类似
的内容receive_n = receive(.., &buffer[0], Size); buffer[receive_n] = ' '; /* terminating zero */ printf("%s", &buffer[0]);
-
并行写入日志文件
static log_fh = fopen("tmp.log", "wb"); ... printf("%s", &buffer[0]); fwrite((void*)buffer, 1, received_n, log_fh);
-
将'tmp.log'与OUT中的文件进行比较。
-
写前检查输出
如果(my_condition(缓冲区,received_n)) printf("% s",和缓冲区[0]);
HWUT有一个用于后处理测试输出的内部基础结构,但是它没有文档化,因此不可靠——在撰写本文时。
编辑TEST目录下的" hut -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>'开头的行。grep
和awk
在这里是你的朋友。你可能想熟悉一下这两个。
或者,您可以直接在连接应用程序中进行过滤。