CAPL编程学习笔记--关于on 事件的详细解释

CAPL编程是比较有特色的一种面向通讯的编程语言。

1:on XXX类型(即事件类型)

维克多的官方文档对CAPL的描述是一门类C语言,说白了它也是用C写出来的。我们看on(注意都是小写)事件的代码结构

on *

{

}; //和C中的函数一样,最后这个括号的;可有可无

大括号内,能实现如下功能

**1):参数定义 可以定义任何CAPL中定义的合法参数(此处定义的参数,有一点比较特殊,类似于C老式的编译器只支持C89,只能在代码块首部定义参数)。目前本人使用的CANoe15自带的编译器

**2):大括号内,可以调用CAPL自带的库函数,和用户自定义的函数

扩展:on 事件的本质是,是通过回调函数实现的

下表总结了各种ON事件,以及他们的作用和应用场景

1.1 on 系统事件

1.2 on 控制器事件

1.3 on 报文事件

CAN报文事件
on message +目标
报文(该目标报文有多种格式)
目标报文使用ID
id常用十进制或十六进制表示
on message 123
on message 0x123
on message CAN1.0x123
使用BDC中定义的
报文名称
on message VehiState
使用 *代表on message *
(代表所有报文)
规定ID范围on message can1.0x123-0x150

 注意,这里ID的排序,必须是升序,且不推荐使用这种形式。之前尝试过这种形式,代码执行时出现各种错误,根本实现不了

1.4 on 系统变量事件

系统变量时间
on sysvar
on sysvar 命名空间
:: 系统变量名
on sysVar 命名空间之间需使用
一个空格隔开。
测试中发现使用以下格式
“on sysvar sysar::”这种格式也是可以的

1.5  on 键盘事件

on 键盘事件,是通过电脑键盘上的按键实现触发。实际调试过程中会经常使用到

从上表也能看出来两个知识点

**1)on key 本质上是把按键值转换为ASCIL码,参考上图的空格按键响应。

**2)从书写形式上,也可以看出来,所有能一次打印出来的,键盘字符(无论是直接打出来的,还是通过shitf+其他按键打出来的字符),均要用''包含。而如F1-F12这一类的字符,则不需要用''包含。

以下示例均可说明

on key '+'
{
}
on key '*'
{
}
on key'?'
{
}

1.5 比较特殊的一类 on时间(定时器事件)

定时器事件,需要用户先自定义一个定时器
定时器事件on mstimer 定时器名注意,这个定时器名是用户自
定义的
on timer 定时器名

 1.6 on signal 事件

on signal 事件,比较特殊。我们知道signal是不能在CAPL中直接被定义的。

基本格式

on signal 信号名       //格式1
{a1 = this;
}
on signal_update 信号名   //格式2
{
a2 = this;
}
两种格式的区别在于,a1只在最近一次信号被改变时被赋值,而a2每次信号出现都会被赋值,
也就是说,格式2,在每一次信号出现是都会被调用

使用 on signal事件,有两个问题必须关注

**1)必须配合DBC,LDF ,ODD等数据库文件使用,即在工程中必须导入这些数据库文件。

**2)DBC,LDF文件中信号名称,不强制独一无二。就导致了一个BUG,如果两个信号同名,就会导致混乱,于是在引用信号时,最好在前面假如报文名

on signal 报文名::信号名 
{}

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

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

相关文章

设备管理系统解决方案

软件资料获取:软件项目开发全套文档下载_软件项目文档-CSDN博客 1.系统概述 1.1.需求描述 建立设备信息库,对设备相关档案的登录、整理。通过建立完善的设备档案,将设备的各类原始信息进行信息化管理,使设备档案查询工作方便快…

一图总结:华为销售体系(铁三角组织LTC流程)

《华为铁三角工作法》阅读了多遍,花了些时间整理了一张图对本书的框架性总结,从流程(LTC)、组织(铁三角)、激励和管理三个大方面概览华为销售体系。 核心是一靠流程,二靠团队,而前提…

阿里云服务器大降价20%,简单拥有五年三台2h4gECS,组建公网集群

要在阿里云ECS上组建集群,您可以按照以下步骤进行操作: 创建ECS实例:登录阿里云控制台,选择ECS实例,点击“创建实例”按钮。根据实际需求选择实例的配置参数,例如实例规格、操作系统、网络等。根据需要选择…

如何使用视频号下载提取器提取视频,推荐2种方法使用!

视频号下载提取视频号视频,推荐大家2个方法! 前者简单,后者较为复杂,不过都可以提取视频号视频,大家可根据实际情况来使用。 01 视频号下载工具提取器? 1:通过搜一搜的这款搜索引擎找到自己…

【InternLM 实战营笔记】大模型评测

随着人工智能技术的快速发展, 大规模预训练自然语言模型成为了研究热点和关注焦点。OpenAI于2018年提出了第一代GPT模型,开辟了自然语言模型生成式预训练的路线。沿着这条路线,随后又陆续发布了GPT-2和GPT-3模型。与此同时,谷歌也…

【Go语言】Go语言中的数组

Go语言中的数组 1 数组的初始化和定义 在 Go 语言中,数组是固定长度的、同一类型的数据集合。数组中包含的每个数据项被称为数组元素,一个数组包含的元素个数被称为数组的长度。 在 Go 语言中,你可以通过 [] 来标识数组类型,但…

嵌入式学习-qt-Day4

嵌入式学习-qt-Day4 一、思维导图 二、作业 1.设计一个界面&#xff1a;显示系统时间&#xff1b;可以设置闹钟&#xff0c;在设置的时间到达后&#xff0c;显示五次字符串&#xff0c;并且语音播报。 Wight.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget>…

《Vite 基础知识》Vitepress 技术文档站点搭建与配置

前言 简介 VitePress 是一个静态站点生成器 (SSG)&#xff0c;专为构建快速、以内容为中心的站点而设计。 简而言之&#xff0c;可构建你自己的 技术文档站点&#xff1b; 环境要求 Node.js 18 及以上版本。我使用 v20.11.0 创建 第一步&#xff1a; 全局安装 npm i vitep…

gdb调试技巧

gdb调试教程 前言gdb的调试命令显示需要调试的代码&#xff1a;l&#xff08; list &#xff09;启动调试&#xff1a;r (run)断点&#xff1a;b&#xff08;Breakpoint&#xff09;设置断点查看断点&#xff1a;info b删除断点&#xff1a;d打开断点 / 关闭断点 逐语句进行调试…

node 之 http模块

1.什么是http模块 在网络节点中&#xff0c;负责消费资源的电脑叫做客户端&#xff1b;负责对外提供网络资源的电脑&#xff0c;叫做服务器 http模块是node.js官方提供的&#xff0c;用来创建web服务器的模块&#xff0c;通过http模块提供的http.createServer()方法&#xff0c…

数仓开发环境链接

这里写目录标题 1开发工具链接大数据组件1.1 启动hiveserver21.2配置DataGrip连接1.3测试使用 2 环境问题排查思路 1开发工具链接大数据组件 1.1 启动hiveserver2 数仓开发工具datagrip 需要用到JDBC协议链接到Hive&#xff0c;需要启动hiveserver2。 cd /opt/module/hive h…

c语言day4 运算符 表达式 三大控制结构

1&#xff1a; 2&#xff1a; 输入一个年月日 计算这是这一年的第几天 17 int year,month,day;18 printf("请输入年份 月份 日期");19 scanf("%d %d %d",&year,&month,&day);20 int feb28;21 if(year%40&&year%1…

周鸿祎首堂免费课与千万网友分享“AGI趋势”

“我讲课不割韭菜&#xff0c;宗旨是免费、分享、科普、交流。AI时代技术发展迅速&#xff0c;AI知识普及尤为重要。”2月29日&#xff0c;360公司创始人周鸿祎免费课正式开启&#xff0c;全网多平台直播了AI系列第一讲“预见AGI”&#xff0c;千万网友观看。免费课上&#xff…

BUUCTF crypto做题记录(11)新手向

一、[HDCTF2019]bbbbbbrsa 题目所给的信息我汇总到以下代码中 from base64 import b64encode as b32encode from gmpy2 import invert,gcd,iroot from Crypto.Util.number import * from binascii import a2b_hex,b2a_hex import randomflag "************************…

mysql数据库安装与使用(一)

目录 前言 一&#xff0c;安装mysql数据库 二&#xff0c;mysql数据库使用 连接mysql数据库 创建数据库 创建表格 插入数据 查询数据 更新数据 删除数据 关闭连接 使用数据库 查看所有数据库 查看数据库中的表 三&#xff0c;mysql设置 创建用户 授予权限 刷新权…

怎么制作文件类型二维码?文件二维码如何加密?

现在将文件转二维码图片后&#xff0c;分享生成二维码来扫码查看或者下载文件的方式&#xff0c;在很多的场景中都有应用。这个方法的优势在于&#xff0c;成本低而且安全性高&#xff0c;有利于用户快速获取内容的速度&#xff0c;有效提高用户体验&#xff0c;而且日常使用的…

ZABBIX修改web界面的 “支持“,“帮助”,“Integrations“。等菜单按钮,百试百灵,删除修改Help,Support菜单

♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ ♥ **ZABBIX修改web界面的 “支持”&#xff0c;“帮助”,“Integrations”。等菜单按钮&#xff0c…

基于 Transformer 的中文对联生成器

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

javaWeb学习04

AOP核心概念: 连接点: JoinPoint, 可以被AOP控制的方法 通知: Advice 指哪些重复的逻辑&#xff0c;也就是共性功能(最终体现为一个方法) 切入点: PointCut, 匹配连接点的条件&#xff0c;通知仅会在切入点方法执行时被应用 目标对象: Target, 通知所应用的对象 通知类…

模糊PID控制算法实战讲解-案例温度控制(附C语言实现)

可结合之前的文章一起理解&#xff1a; 控制算法-PID算法总结-从公式原理到参数整定解析&#xff08;附C源码&#xff09;_pid自整定算法-CSDN博客 模糊控制算法实战讲解-案例温度控制&#xff08;附C语言实现&#xff09;-CSDN博客 目录 一、模糊PID控制的原理 1.1 模糊化…