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

本文通过一个CANoe中CAPL定时器代码执行过快的问题,探讨了模拟总线的工作模式,包括animated with factor和as fast as possible两种方式的影响。问题在于as fast as possible模式导致定时器事件快速触发,解决方案是切换到animated with factor并设置运行速度为1,以保持正常速度运行程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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窗口中看到输出的文本信息确实很快:

Write窗口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车通信技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值