CAPL 脚本中 定时器 ,按键触发事件的使用

事件类型种类

CAPL 脚本是一件基于事件驱动的类c语言。
新建一个test.can。在工具栏 -> Filter 可以根据总线类型,选择出需要的事件类型,除了 system 和 Value Objects 是必须的,其它的都是可选的。我这路因为总线是基于flexray和can的,我就选择了flexray,can 和diagnostics
.在这里插入图片描述

System

在这里插入图片描述

Value Objects

在这里插入图片描述

CAN

在这里插入图片描述

Diagnostic

在这里插入图片描述

Flexray

在这里插入图片描述

测量系统事件(on start)

这四个事件分别在工程开始和结束的时候分别调用

  • on preStart :程序仅用于初始化变量、在写窗口中显示消息和从文件中读取数据。性都是可用的。但是不可以在总线上使用output()类似的输出函数。
  • on preStop:功能可以用来执行一些在测量停止生效之前必须完成的最终动作。
  • 这四个事件被执行的先后顺序是 on preStart ,on start,on preStop,on stopMeasurement

在这里插入图片描述
新建一个can文件,创建四个事件,然后执行 run ,stop
在这里插入图片描述
在write输出窗口可以看到四个事件被执行的顺序。
在这里插入图片描述

键盘响应事件(on key )

CAPL对键盘的26个字母(区分大小写),和10个数字,以及下图的特殊键都能响应。
在这里插入图片描述
新建 test.can 如下图创建了一些 onkey
在这里插入图片描述
输出结果:
在这里插入图片描述

定时器(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
/*@!Encoding:ASCII*/
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
}

输出结果可见每1s,打印一次time1的信息,10s之后打印timer2的信息。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蚂蚁小兵

慢慢长夜磨一章好文章,费烟!!

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

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

打赏作者

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

抵扣说明:

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

余额充值