事件处理
事件起始的关键字on*
关键字this
报文事件或变量事件中,可以使用关键字this访问数据内容
系统事件
事件 | 事件进程 |
---|---|
仿真测量初始化 | on preStart |
CAPL程序开始 | onStart |
仿真测量停止 | on preStop |
仿真测量结束 | on stopMeasurement |
键盘响应事件 | on key |
定时器 | on timer |
on key
CAPL对键盘的26个字母(区分大小写),和10个数字,以及下图的特殊键都能响应
定时器(on timer)
定时器在capl语法中,是一种数据类型,有下面两种方式定义(秒和毫秒)
timer - timer based on seconds
msTimer - timer based on milliseconds
有两个定时器函数:
setTimer():启动定时器
void setTimer(msTimer t, long duration); // form 1
void setTimer(timer t, long duration); // form 2-
cancelTimer(): 停止定时器
void cancelTimer(msTimer t);
void cancelTimer(timer t);
如上图所示方法,创建两个定时器:
实现功能 on start的时候,启动timer1(1000ms) 和 timer2(10s),1000ms之后触发timer1,打印信息,然后再次重置timer1时间,10s时间到了之后触发timer2打印信息,并取消timer1
variables
{
char timeBuffer[30];
mstimer timer1; // define timer1 unit:ms
timer timer2; // define timer2 unit:s
}
on start
{
setTimer(timer1,1000); // initialize timer to run for 100 msec
setTimer(timer2,10); // initialize timer to run for 100 s
}
on timer timer1
{
getLocalTimeString(timeBuffer);
write("%s:timer1 time out",timeBuffer);
setTimer(timer1,1000); // reset timer
}
on timer timer2
{
getLocalTimeString(timeBuffer);
write("%s:timer2 time out",timeBuffer);
cancelTimer(timer1); // cancel timer
}
CAN控制器事件
on busoff CAN控制器进入busoff状态
on errorActive CAN控制器进入主动错误状态
on errorPassive CAN控制器进入被动错误f状态
on warningLimit CAN控制器达到报警线
报文事件
关键字:**on message *****
on message 123 十进制ID位123
on message 0x123 十六进制ID位123
on message MMI_DASH
on message CAN1.123 CAN通道1收到报文123反应
on message * 对所有的报文反应
on message100-200 对CAN ID在100~200间报文反应
信号事件
关键字:on signal xxx on
signal_updata xxx
前者只在指定信号的值发生变化时被调用
后者在每次接收到指定信号时均需被调用