HWUT - выборочная печать из буфера чтения в файл .exe в папке OUT

Я получаю данные из последовательного порта. Я использую HWUT для сравнения результатов тестов. Содержимое приемного буфера нельзя использовать напрямую для сравнения результатов GOOD и OUT. Потому что на OUT всегда будут ненужные командные строки, входы и прочее. Я хочу выбрать, что должно быть записано из буфера чтения в файл OUT. Например ниже пример

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

И я хотел бы, чтобы выходной файл имел только «результат: 1».
Когда я проверил код, кажется, что messages.py печатает на стандартный вывод. Но не уверен, что это используется для печати в файл OUT. Как этого добиться?


person Dee Vee    schedule 19.10.2015    source источник


Ответы (2)


Все, что вы печатаете на «stdout», должно появиться в файлах «OUT/*». Если это не так, то это не будет иметь ничего общего с приемом через последовательную линию (линии). Вот что я бы сделал для анализа:

  1. В вашем приложении соединителя должно быть что-то вроде

    receive_n = receive(.., &buffer[0], Size); buffer[receive_n] = '\0'; /* 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(моё_условие(буфер, получено_n)) printf("%s", &buffer[0]);

HWUT имеет внутреннюю инфраструктуру для постобработки выходных данных теста, но она не документирована и, следовательно, ненадежна — на момент написания этой статьи.

person Frank-Rene Schäfer    schedule 19.10.2015
comment
Привет, Фрэнк, я думаю, что мой вопрос не ясен. Здесь нет проблем с HWUT. В файл OUT печатается именно то, что пришло в буфер приема. Но то, что поступает из приемного буфера, не может быть использовано для сравнения. Поэтому я ищу, чтобы отфильтровать содержимое. Я хотел бы напечатать в файл, используя опцию фильтрации только то, что я хочу. Например, в приведенном выше случае, скажем, мне нужен только результат: 1 для сравнения. - person Dee Vee; 19.10.2015
comment
Привет, Фрэнк, я создал execute-this.sh в той же папке, где находится мое приложение, и я не вижу, чтобы этот файл использовался --hwut-info. Не уверен, что я делаю неправильно. - person Dee Vee; 19.10.2015

Отредактируйте файл «hwut-info.dat» в вашем каталоге TEST.

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 — ваши друзья. Возможно, вы захотите ознакомиться с этими двумя.

Кроме того, вы можете фильтровать прямо в приложении для подключения.

person Frank-Rene Schäfer    schedule 19.10.2015
comment
Сценарий оболочки должен отвечать на --hwut-info, как показано в hwut.sourceforge.net /html/детерминированный/выбор.html - person Frank-Rene Schäfer; 19.10.2015