Vector - CAPL - 定时器函数和使用
创始人
2024-05-29 01:41:24
0

定时器在C语言中的使用我想学习过C编程的都不会陌生,它能够提供延时,完成等待一定的时间;它也可以实现多线程的操作,并行实行某些软件功能。那在CAPL中,定时器又能做哪些工作呢?又是怎么使用的呢?今天我们就一起来看下。

timer&msTimer

在CAPL中主要的定时器有毫秒定时器和秒定时器,他们分别是Timer和msTimer。对于计时器类型的变量,最长时间为2147483647 s(=596523.23h),对于msTimer类型的变量最长时间是2147483647ms(=2147483647s=596,52h);我们常定义在variables中,如下:

variables
{timer timer1;msTimer mstimer2;message 0x100 msg1;message 0x101 msg2;
}on timer timer1
{output(msg1);write("执行timer1内部内容,发送0x100报文");
}on timer mstimer2
{output(msg2);write("执行mstimer2内部内容,发送0x101报文");
}

setTimer

功能:CAPL中的定时器精度取决于所使用的的硬件,一般精度为一毫秒;

msTimer的最大值为:2147483647 ms=2147483648 s=596,52h。

from 2:计时器的最大值为2147483647 s=596523.23h

from 3:计时器的UI大致为2147483647秒+214783647ns ~ 2147483649秒

t:上面在variables中定时的毫秒计时器或秒定时器

duration:设置定时器时间为duration,时间为毫秒或者秒

durationSec:起始时间

durationNanoSec:终止时间

variables {msTimer t1;Timer t23;
}on key F1 {setTimer(t1, 200); // set timer t1 to 200 ms
}on key F2 {setTimer (t23, 2); // set timer t23 to 2 sec
}on key F3 {setTimer (t23, 0, 1250*1000 ); // set timer t23 to 1.250 milliseconds
}on timer t1 {write("F1 was pressed 200ms ago");
}on timer t23 {write("F2 was pressed 2 sec ago or F3 1250000 nsec ago");
}

setTimerCyclic

功能:设置一个循环计时器,循环调用定时器

t:毫秒定时器或秒定时器(timer&msTimer),在variables中定义的定时器

firstDuration:启动定时器起始时间

period:计时器在到期时重新启动的时间,周期时间以毫秒为单位

periodInNs:计时器在到期时重新启动的时间,,周期时间以纳秒为单位

variables {msTimer t1;Timer t23;message 0x100 msg1;
}
on timer timer1
{output(msg1);write("执行timer1内部内容,发送0x100报文");
}
void send_msg1()
{//以周期为20ms的周期发送0x100setTimerCyclic(timer1, 20)
}
void send_msg2()
{//等待100ms后以周期为20ms的周期发送0x100setTimerCyclic(timer1, 100,20)
}

cancelTimer

功能:停止正在激活的定时器

t:毫秒定时器或秒定时器(timer&msTimer),在variables中定义的定时器

variables {msTimer t1;Timer t23;message 0x100 msg1;
}
on timer timer1
{output(msg1);write("执行timer1内部内容,发送0x100报文");
}
void send_msg1()
{//以周期为20ms的周期发送0x100setTimerCyclic(timer1, 20)
}
void send_msg2()
{//等待100ms后以周期为20ms的周期发送0x100setTimerCyclic(timer1, 100,20)
}
void stop_msg()
{//停止周期发送报文0x100cancelTimer(timer1);
}

timetoelapse

功能:计时器超时并调用事件过程之前所需的时间

返回一个值,该值指示在调用计时器事件过程之前还要经过多少时间。对于Form 1,时间值以秒为单位返回;对于Form 2,时间值以毫秒为单位返回。如果计时器未激活,则返回-1;计时器事件过程本身也是如此。

t:毫秒定时器或秒定时器(timer&msTimer),在variables中定义的定时器

timer t;
setTimer(t, 5);
write("Time to elapse: %d", timeToElapse(t)); // writes 5

isTimerActive

功能:返回值指示特定计时器是否处于活动状态,在调用setTimer函数和调用ontimer事件过程之间就是这种情况。

t:毫秒定时器或秒定时器(timer&msTimer),在variables中定义的定时器;

返回值:如果计时器激活状态则为1;否则为0。0也在计时器事件过程中返回。

timer t;
write("Active? %d", isTimerActive(t)); // writes 0
setTimer(t, 5);
write("Active? %d", isTimerActive(t)); // writes 1

以上是CAPL相关定时器的所有常用函数,欢迎大家评论区交流!!!

相关内容

热门资讯

三年级作文我是爸爸妈妈小帮手... 三年级作文我是爸爸妈妈小帮手 篇一我是爸爸妈妈小帮手我是一个三年级的小学生,虽然我还小,但我一直都很...
写博物馆的作文三年级【通用6... 写博物馆的作文三年级 篇一博物馆是一个神奇的地方,我最喜欢去博物馆看展览了。上周末,我和爸爸妈妈一起...
三年级我的妈妈的作文300字... 三年级我的妈妈的作文300字 篇一我亲爱的妈妈妈妈,您是我最亲爱的人,也是我最敬爱的人。在我成长的道...
小学三年级写景作文(经典6篇... 小学三年级写景作文 篇一美丽的春天春天来了,大自然仿佛换了一幅崭新的画,到处都是一片生机勃勃的景象。...
我班的活雷锋三年级作文【通用... 我班的活雷锋三年级作文 篇一我们班的小雷锋在我们班级里,有一个特别的小朋友,他就是我们的活雷锋。他叫...
海边作文300字三年级(精选... 海边作文300字三年级 篇一我喜欢海边,因为海边有美丽的沙滩、清澈的海水和各种有趣的海洋生物。每年暑...
三年级作文上学的路上开头【实... 三年级作文上学的路上开头 篇一一大早,天空还是微微泛着蓝色的时候,我便背上了书包,踏上了上学的征程。...
不起眼的主角作文【优选3篇】 不起眼的主角作文 篇一《小草的故事》有一天,我在花园里散步,突然发现一株小草。它生长在花园的角落,显...
家乡的环境作文三年级300字... 家乡的环境作文三年级300字20篇 篇一标题:我家乡的美丽环境我家乡是一个美丽的小镇,它位于山脚下,...
爸爸的作文【优质6篇】 爸爸的作文 篇一爸爸的作文今天是我第一次写作文,我选择写一篇关于我的爸爸的作文。爸爸是我心目中最伟大...
参观洛阳周王城天子驾六博物馆... 参观洛阳周王城天子驾六博物馆三年级作文 篇一我去洛阳参观了周王城天子驾六博物馆,感受到了历史的厚重和...
关于老师的一件事200字作文... 关于老师的一件事200字作文三年级作文 篇一今天是我上三年级的第一天,我迫不及待地走进了教室,想要见...
香水百合(通用4篇) 香水百合 篇一:追寻芬芳之旅香水百合,一种散发着迷人芬芳的花朵,常常被人们用来制作香水。它的美丽和独...
我们是一家人学生作文500字... 我们是一家人学生作文500字 篇一我们是一家人家,是一个温暖的港湾,是一个永远的归宿。在这个家庭中,...
你是我最崇拜的人小学作文(经... 你是我最崇拜的人小学作文 篇一我最崇拜的人是我的爸爸。他是一个非常了不起的人,他不仅是我的爸爸,还是...
小V过生日小学作文【实用3篇... 小V过生日小学作文 篇一我的好朋友小V过生日了!今天是她的生日,我早早地就起床了,准备给她一个惊喜。...
住在我心里的人作文【实用3篇... 住在我心里的人作文 篇一我的父亲,住在我心里的人在我心中,有一个特别的角落,专门为我亲爱的父亲而设。...
打雪仗的小学作文(优选3篇) 打雪仗的小学作文 篇一:我和朋友们的欢乐雪战冬天来了,大地披上了洁白的雪衣。我和朋友们迫不及待地跑到...
中秋赏月的小学作文(优质6篇... 中秋赏月的小学作文 篇一中秋佳节,是我国传统的重要节日之一。这一天,我们会和家人、朋友一起赏月、吃月...
坐地铁和摘小番茄作文【优秀3... 坐地铁和摘小番茄作文 篇一坐地铁和摘小番茄我喜欢坐地铁,因为它是一种方便快捷的交通工具。每天上下班,...