Функция задержки в CAPL, кроме testwaitfortimeout ()

У меня есть тестовый узел CAPL, который управляет источником питания GPIB. Этот CAPL генерирует сигнал, который изменяется каждые 3 мс. Мой CAPL выглядит так:

...
testcase wavGenerator()
{
   GPIBWrite(myDevice, "VOLT", voltValue);
   testwaitfortimeout(3);
   ...
}

Проблема в том, что эта функция testwaitfortimeout () генерирует комментарий в отчете о тестировании, и, поскольку я использую эту функцию 2000/3000 раз для каждого теста, я получаю огромный отчет о тестировании.

Я пробовал реализовать функцию для генерации «задержки», как это делает waitfortimeout (), например:

void delay(int ms)
{
   float refTime;
   refTime = timeNowFloat();
   while(timeNowFloat() < (refTime + ms*100))
   {
      /* Wait to reach expected time*/
   }
}

но это приводит к сбою CANoe. Я пробовал что-то подобное с функциями setTimer (), но проблема та же. Как я могу сгенерировать эту задержку?


person PySerial Killer    schedule 13.12.2017    source источник


Ответы (3)


Одна из идей может заключаться в использовании таймера:

variables
{
  msTimer myTimer;
}

testcase wavGenerator()
{
  GPIBWrite(myDevice, "VOLT", voltValue);
  setTimer(myTimer, 3);
}

on timer myTimer
{
  // your code
}

В качестве альтернативы вы всегда можете создать настраиваемую таблицу стилей (XSLT), которая фильтрует все вызовы testwaitfortimeout из отчета.

person PiranhA    schedule 15.12.2017

Я нашел способ справиться с этим, используя таймер, EnvVar и функцию testWaitForEnvVar ()

on timer tDelay
{
  @EnvDelayFunct = 1;
}

void delay(int ms)
{
  int a;
  write("Wait for %i ms", ms); 
  setTimer(tDelay, ms);
  a = testWaitForEnvVar(EnvDelayFunct, 0);
  @EnvDelayFunct = 0;
}
person PySerial Killer    schedule 15.12.2017
comment
testWaitForEnvVar не допускается в узле CAPL - person Om Choudhary; 23.04.2019

Вы можете отфильтровать комментарии к задержке с помощью опции фильтра отчета о тестировании и снять отметку с возобновления по событиям.

person Vivek Patil    schedule 18.07.2021