前言:上一章节中通过系统变量可以实现CAPL和Panel之前的交互,这是针对报文是周期性报文的一种解决方案。如果需要当系统变量发生变化时再发出报文该如何操作呢?
针对上面的问题,需要用到CAPL中针对系统变量的两个事件
On SysVar和On SysVar_Update。
On SysVar和On SysVar_Update相同点是当系统变量发生变化时两个事件都会触发。
但是On SysVar_Update只要是对系统变量赋值不诊断是否和前一次的数据一样都会触发。
如 A--->B 两个函数事件都会触发
A--->A 只有On SysVar_Update会触发。
基于之前的工程,下面通过按键'A'和'W'来触发相应的动作。
代码修改如下。


测试先按下A:

可以发现只有sysvar_update被调用了,这是因为系统变量VehSpd的默认值为0
当W被按下时

两个函数都被调到了。
再按一次W

可以发现这一次只有upate被调用了,因为系统变量VehSpd的值没有发生变化,所以on sysvar不会被调用。
---------------------------------------------------------END------------------------------------------------------------------
搜索并关注我的公众号 “蜗牛科技-SnailTech”,聚焦汽车电子软件开发全栈技术!在这里,你将收获:
🔧 深入底层:嵌入式驱动开发精要
⚙️ 掌握Autosar:ASW应用层与BSW基础软件实战解析
🤖 拥抱MBD:模型驱动开发与自动代码生成实践
✅ 高效验证:基于CANoe/VTestStudio的自动化测试方法论
🚀 持续交付:自动化集成测试(CI/CT)落地指南
💡 独家心得:一线开发中的避坑经验与深度思考
无论你是新手入门还是资深工程师,这里都有能助你突破瓶颈的硬核干货。关注我,一起探索汽车电子的技术纵深!
文章介绍了在CAPL编程中,如何利用OnSysVar和OnSysVar_Update事件处理系统变量变化的情况。当系统变量值改变时,这两个事件会被触发。OnSysVar_Update不论变量值是否变化都会执行,而OnSysVar仅在值变化时触发。通过按键A和W的示例,展示了在变量值未变时,只有OnSysVar_Update被调用的现象。
983

被折叠的 条评论
为什么被折叠?



