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

2024-03-01 13:28

本文主要是介绍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 报文名::信号名 
{}

这篇关于CAPL编程学习笔记--关于on 事件的详细解释的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/762590

相关文章

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w