除了 testwaitfortimeout() 之外,CAPL 中的延迟函数
Delay function in CAPL apart from testwaitfortimeout()
我有一个控制 GPIB 电源的 CAPL 测试节点。此 CAPL 生成每 3 毫秒修改一次的信号。我的 CAPL 如下所示:
...
testcase wavGenerator()
{
GPIBWrite(myDevice, "VOLT", voltValue);
testwaitfortimeout(3);
...
}
问题在于此 testwaitfortimeout() 函数会在测试报告中生成一条注释,并且由于我为每个测试用例使用此函数 2000/3000 次,所以我以一份巨大的测试报告结束。
我已经尝试实现一个函数来生成 "delay",就像 waitfortimeout() 所做的那样:
void delay(int ms)
{
float refTime;
refTime = timeNowFloat();
while(timeNowFloat() < (refTime + ms*100))
{
/* Wait to reach expected time*/
}
}
但这会使 CANoe 崩溃。我用 setTimer() 函数尝试过这样的事情,但问题是一样的。我怎样才能产生这种延迟?
一个想法可能是使用计时器:
variables
{
msTimer myTimer;
}
testcase wavGenerator()
{
GPIBWrite(myDevice, "VOLT", voltValue);
setTimer(myTimer, 3);
}
on timer myTimer
{
// your code
}
或者,您始终可以创建自定义样式 -sheet (XSLT) 以过滤报告中对 testwaitfortimeout 的所有调用。
我找到了解决这个问题的方法,使用计时器、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;
}
您可以使用测试报告过滤器选项过滤掉延迟的评论,并取消勾选事件恢复
我有一个控制 GPIB 电源的 CAPL 测试节点。此 CAPL 生成每 3 毫秒修改一次的信号。我的 CAPL 如下所示:
...
testcase wavGenerator()
{
GPIBWrite(myDevice, "VOLT", voltValue);
testwaitfortimeout(3);
...
}
问题在于此 testwaitfortimeout() 函数会在测试报告中生成一条注释,并且由于我为每个测试用例使用此函数 2000/3000 次,所以我以一份巨大的测试报告结束。
我已经尝试实现一个函数来生成 "delay",就像 waitfortimeout() 所做的那样:
void delay(int ms)
{
float refTime;
refTime = timeNowFloat();
while(timeNowFloat() < (refTime + ms*100))
{
/* Wait to reach expected time*/
}
}
但这会使 CANoe 崩溃。我用 setTimer() 函数尝试过这样的事情,但问题是一样的。我怎样才能产生这种延迟?
一个想法可能是使用计时器:
variables
{
msTimer myTimer;
}
testcase wavGenerator()
{
GPIBWrite(myDevice, "VOLT", voltValue);
setTimer(myTimer, 3);
}
on timer myTimer
{
// your code
}
或者,您始终可以创建自定义样式 -sheet (XSLT) 以过滤报告中对 testwaitfortimeout 的所有调用。
我找到了解决这个问题的方法,使用计时器、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;
}
您可以使用测试报告过滤器选项过滤掉延迟的评论,并取消勾选事件恢复