问题描述
我想在CAPL中检查消息是否正在仿真中接收,以及是否不在跟踪中,所以我想发送新消息。我试过使用类似的功能。我要检查特定消息是否正在接收? TestWaitForPDU(); TestWaitFormessage(msg,2000)等,但是在简单的配置中,它们不起作用。
我也尝试过使用istimerActive()或istimerunning(),但是这些功能不会检查消息是否已停止接收或发送。
我在通用节点上工作。我已经尝试过类似的事情
on timer tslpack
{
int sleepack;
long Systemtime[9];
sleepack= isTimerActive(tslpack);
//write("Bus Active");
// write("Running Status %d",tslpack.isRunning());
if(sleepack==1)
{
write("timer cancelled");
cancelTimer(tslpack);
Settimer(tslpack,100);
}
else
{
result=1;
if(result ==1)
{
write("Bus Sleep");
sleeptime=timeNow();
result = 0;
}
}
解决方法
您已经提到您不是在测试节点中编写代码,而是要在仿真节点中编写代码。显然,应该按照测试功能名称显示功能TestWaitForPDU();TestWaitFormessage(msg,2000)
。
我想您正在等待CAN消息,因此为您提供了示例代码。
variables
{
msTimer TimerToCheckMessage;
message CAN1.0x123 TxMsg; //Message which you want to send
}
on start
{
setTimer(TimerToCheckMessage,103);
TxMsg.dlc = 4;
}
on message CAN1.0x1 //Message which you want to check
{
setTimer(TimerToCheckMessage,103);
}
on timer TimerToCheckMessage
{
output(TxMsg);
setTimer(TimerToCheckMessage,103);
}