我一直在编写一个 CAPL 脚本,它会在一定的延迟后在每个通道(2 个)上发送消息。我想使用生成以下延迟设置定时器() and mtimer::正在运行功能。
我可以使用 setTimer 函数,但我不知道如何使用mtimer::正在运行。
代码如下所示:
Variables{
message * temp = {DLC=8};
mstimer timer1;
}
on timer timer1{
//Do nothing
}
onstart{
for(noofChannel=1;noofChannel<=2;noofChannel++){
settimer(timer1,100);
temp.CAN = noofChannel;
temp.ID = 0xAA;
While (mstimer::isrunning)==0 // I need to write this right.
{ //wait for timer to expire}
Output(temp);
}
代替mstimer::isrunning
use isTimerActive()
方法。isTimerActive()
如果计时器正在运行,则返回 1;如果计时器到期,则返回 0。
所以你的代码将如下所示:
on start{
for(noofChannel=1;noofChannel<=2;noofChannel++){
settimer(timer1,100);
temp.CAN = noofChannel;
temp.ID = 0xAA;
While (isTimerActive(timer1) == 1)
{ //wait for timer to expire}
}
Output(temp);
}
}
但我不建议这样做。而不是循环进入on start
,您可以通过输出第二条消息onTimer
on start{
temp.CAN = 1;
temp.ID = 0xAA;
Output(temp);
settimer(timer1,100);
}
on timer timer1{
temp.CAN = 2;
Output(temp);
}
如果您想保持通用,即不限制为 2 个通道,您可以采用一个变量并在计时器中递增它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)