Vector - CAPL - 定时器函数和使用

news2024/12/27 12:49:34

定时器在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的周期发送0x100
    setTimerCyclic(timer1, 20)
}
void send_msg2()
{
    //等待100ms后以周期为20ms的周期发送0x100
    setTimerCyclic(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的周期发送0x100
    setTimerCyclic(timer1, 20)
}
void send_msg2()
{
    //等待100ms后以周期为20ms的周期发送0x100
    setTimerCyclic(timer1, 100,20)
}
void stop_msg()
{
    //停止周期发送报文0x100
    cancelTimer(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相关定时器的所有常用函数,欢迎大家评论区交流!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/389836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SPringCloud:Nacos快速入门及相关属性配置

目录 一、Nacos快速入门 1、在父工程中添加spring-cloud-alilbaba的管理依赖 2、如果有使用eureka依赖,将其注释 3、添加nacos的客户端依赖 4、修改yml文件,注释eureka配置 5、启动测试 二、Nacos相关属性配置 1、Nacos服务分级存储 2、根据集群…

ELasticsearch基本使用——基础篇

1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容例如:在GitHub搜索代码在电商网站搜索商品在谷歌搜索答案在打车软件搜索…

Oracle中merge Into的用法

Oracle中merge Into的用法 使用场景 在操作数据库时,数据存在的情况下,进行update操作;不存在的情况下,进行insert操作;在Oracle数据库中,能够使用merge into来实现。 基本语法 merge into table_name …

Go项目的目录结构基本布局

前言 随着项目的代码量在不断地增长,不同的开发人员按自己意愿随意布局和创建目录结构,项目维护性就很差,代码也非常凌乱。良好的目录与文件结构十分重要,尤其是团队合作的时候,良好的目录与文件结构可以减少很多不必要…

HashSet原理

HashSet原理HashSet原理1.概述2.底层代码3.原理图解4.总结4.1: 1.7原理总结4.2: 1.8原理总结HashSet原理 1.概述 ​ HashSet 实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的 迭代顺序;特别是它不保证…

MathType7最新版免费数学公式编辑器

话说我也算是 MathType准资深(DB)用户了,当然自从感觉用DB不好之后,我基本上已经抛弃它了,只是前不久因为个别原因又捡起来用了用,30天试用期间又比较深入的折腾了下,也算是变成半个MathType砖家,coco玛奇朵简单介绍一下这款软件:在很可能看到这儿的你还没有出生的某个年月&…

汇编语言程序设计(三)之汇编程序

系列文章 汇编语言程序设计(一) 汇编语言程序设计(二)之寄存器 汇编程序 经过上述课程的学习,我们可以编写一个完整的程序了。这章开始我们将开始编写完整的汇编语言程序,用编译和连接程序将它们连接成可…

反转链表——C语言经典单链表题目

首先,把oj题目的链接放在这,大家可以先去练习一下,再来看解析。 反转链表——力扣 题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 现在让我们来看一下解决代码,先看一下我写…

网上销售笔记本系统

技术:Java、JSP等摘要:本文讲述了基于B/S模式的笔记本电脑在线销售系统的设计与实现。所谓的笔记本电脑在线销售系统是通过网站推广互联企业的笔记本电脑和技术服务,并使客户随时可以了解企业和企业的产品,为客户提供在线服务和订…

04_Apache Pulsar的可视化监控管理、Apache Pulsar的可视化监控部署

1.4.Apache Pulsar的可视化监控管理 1.4.1.Apache Pulsar的可视化监控部署 1.4.Apache Pulsar的可视化监控管理 1.4.1.Apache Pulsar的可视化监控部署 第一步:下载Pulsar-Manager https://archive.apache.org/dist/pulsar/pulsar-manager/pulsar-manager-0.2.0/…

OpenCV-Python学习(22)—— OpenCV 视频读取与保存处理(cv.VideoCapture、cv.VideoWriter)

1. 学习目标 学习 OpenCV 的视频的编码格式 cv.VideoWriter_fourcc;学会使用 OpenCV 的视频读取函数 cv.VideoCapture;学会使用 OpenCV 的视频保存函数 cv.VideoWriter。 2. cv.VideoWriter_fourcc()常见的编码参数 2.1 参数说明 参数说明cv.VideoWr…

用代码实现解析解的方式求解_梯度下降法思路_导函数有什么用_接23节---人工智能工作笔记0026

这里24节,25节,介绍了一下人工智能高等数学要学习的一些内容,初步了解了一下,微积分中用到的知识~微分~以及导数这里... 然后接着23节,我们还是继续,走人工智能的主线,先把整体的人工智能的内容学习一遍,然后再去回去看数学知识更有目的性. 然后首先来回顾一下,这里机器学习,其…

为什么我给蓝牙芯片KT6368A发送AT指令没有反应呢

目录 一、问题描述简介 为什么我给蓝牙芯片KT6368A发送AT指令没有反应呢?查看了文档也没找到具体的解决办法 二、详细描述 这个问题,主要分为两个部分去考虑 KT6368A的芯片,上电是否正常,也就是有没有跑起来,这个详…

【ROS学习笔记11】ROS元功能包与launch文件的使用

【ROS学习笔记11】ROS元功能包与launch文件的使用 文章目录【ROS学习笔记11】ROS元功能包与launch文件的使用前言一、ROS元功能包二、ROS节点运行管理launch文件2.1 launch文件标签之launch2.2 launch文件标签之node2.3 launch文件标签之include2.4 launch文件标签之remap2.5 l…

Linux操作系统学习(进程间通信)

文章目录进程间通信进程通信的意义进程通信的方式1.基于文件的方式匿名管道命名管道2.基于内存的通信方式共享内存验证内核相关的数据结构了解进程间通信 进程通信的意义 ​ 当我们和另一个人打电话时两部手机都是独立的,通过基站传递信号等等复杂的过程就实现了通…

RPC重试机制和控制方案

重试机制 因为网络抖动等原因导致 RPC 调用失败,这时候使用重试机制可以提高请求的最终成功率,减少故障影响,让系统运行更稳定。 重试简易实现方案 在重试的过程中,为了能够在约定的时间内进行安全可靠地重试,在每次…

计算机科学导论笔记(二)

三、数据存储 3.1 数据类型 计算机行业中使用术语“多媒体”来定义包含数字、文本、音频、图像和视频的信息。 位:bit,binary digit的缩写,是存储在计算机中的最小单位,它是0或1. 位模式:为了表示数据的不同类型&a…

关于Paul C.R. - Inductance_ Loop and partial-Wiley (2009)一书的概括

环感抗和部分感抗是两种不同的电路元件,它们通常用于描述不同类型的导体结构中的电流承载能力。 环感抗通常用于描述绕制在磁性芯上的线圈。当电流通过线圈时,它会在磁性芯中产生一个磁场,这个磁场又会对线圈产生一个磁通量。这个磁通量的大…

八股文面试day1

二分查找(解决整数溢出) 方法一:mid(leftright)/2 -> left/2right/2 -> left(-left/2right/2) -> l(r-l)/2 方法二:mid(lr)>>>1 字节溢出整体右移一位就是正确的值 MySQL存储引擎MyISAM和InnoDB的区别 数据…

Raspberry Pi GPIO入门指南

如果您想使用 Raspberry Pi 进行数字输入/输出操作,那么您需要使用 GPIO(通用输入/输出)引脚。在这篇文章中,我们将为您提供 Raspberry Pi GPIO 的基础知识,包括如何访问和操作 GPIO 引脚。 0.认识GPIO 树莓派上的那…