CANoe中的工作模式之争:由一段简单的代码引出的问题

1、引子

有网友问我一个CAPL中timer定时器的代码问题。他在CANoe工程中写了一段代码:每5秒循环触发一次定时器事件程序,输出一句文本信息到Write窗口。但是执行后发现并不是每5秒触发一次定时器事件程序,而是非常快的触发定时器事件程序。当他把这段代码复制到一个新的CANoe工程后,一切又正常了起来。这件事情令他非常困扰。

我首先让他把CAPL代码发我:

variables
{
  timer         t1;
}

on timer t1
{
  write("t1 timeout");
  setTimer(t1, 5);
}

on start
{
  setTimer(t1, 5);
}

代码量很少,逻辑也很清晰简单:在CANoe运行时,启动定时器t1倒计时5秒,倒计时结束触发事件程序on timer t1,执行里面的write函数,输出文本信息"t1 timeout"到窗口。然后又启动定时器t1倒计时5秒,通过嵌套的方式,实现循环。

代码没毛病,从网友提到的在新工程中一切正常可以证明。那么大胆猜测下,问题出在CANoe工程中。我让网友把出问题的那个CANoe工程文件发送给我。

2、问题分析

拿到工程后,我先是执行了一次代码,从Write窗口中看到输出的文本信息确实很快:

CANoe中的工作模式之争:由一段简单的代码引出的问题_第1张图片

代码没问题,肯定是工程的问题。我拿到CANoe工程后,使用demo license可以运行此工程࿰

你可能感兴趣的:(CANoe)