CAPL—on signal到底该怎么玩?

news2024/11/15 9:14:50

总结:一个前提,两种形式,一个注意,外加一个很不常用的知识点

1:一个前提:必须是DBC或其他数据库文件中定义的信号,且这个数据库已经添加到工程中去了。

2:使用格式 on signal+(用户添加的signal名),注意on signal全部为小写,中间至少一个空格

用户添加的signal,也有两种命名格式,一种是直接“空格”+信号名,一种是“空格”+signal所在的message名::信号名

3:两种形式

on signal  和  on signal_update

这里就需要提到一种学习惯性的问题,结合我们之前学到的 on message ,我们知道 只要总线上出现一次,就触发一次,并执行 on message 中大括号{}中包含的代码。又因为signal又是组成message的最小个体,包括我自己,一开始都是认为 on signal 也是和 on message一样的使用

看段代码,RRV_PC_Life假如是存在message0x110上的,我们本意是想每次接收到0x110,就触发一次write函数,输出一次。结果实际测试中并不能实现。你们可以自己试一下,只有RRV_PC_Life的值产生变化时,才会触发大括号内的write函数。

那么我们如何才能每次接收到一帧包含RRV_PC_Life信号的0x110,报文时,就触发一次大括号内的函数?

回答:可以使用 on signal_update,修改上述代码,大家可以自己试一试。

小结:on signal XXX 当 “XXX”的值发生变化时,才会触发大括号内的代码执行

           on signal_update XXX 当“XXX”所在的Message每次出现在总线上时,都会执行大括号内的代码

4:一个注意:注意数据类型的匹配

无论是on signal 还是  on signal_update。我们经常需要使用this指针,将Signal赋值给其他变量(其他包括不限于:1、CAPL中定义的各种全局变量,局部变量 。2、系统变量 3、其他信号)

这时非常需要注意的一个问题就是:“数据类型的匹配”

如下面一个简单的例子

int是signal类型,但是RRV_PC_Life是unsignal类型,这种情况就会产生错误,此外数据长度匹配也很重要。如RRC_PC_Life非常大5个Byte,int只有4个Byte,这样也是会出错的。故需要注意。

5:一个不常用的知识点“this.

注意this后的“.”,在on message中常用,可以直接调用Message中的很多属性,on signal中有且只有一种

this.name

查看上图,运行一下,结果如下图

打印了,信号的全称  message名称::信号名称

 

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

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

相关文章

如何修改音频的音量增益

一、前言 在开发音频相关的功能(比如说语音通话、播放音乐)时,经常会遇到音量太小的问题,这时候就需要我们对原始数据进行处理。本文将介绍如何通过修改原始音频数据来增加增益,本文包含如下内容: 1.音频数…

3D Slicer医学图像全自动AI分割组合拳-MONAIAuto3DSeg扩展

3D Slicer医学图像全自动AI分割组合拳-MONAIAuto3DSeg扩展 1 官网下载最新3D Slicer image computing platform | 3D Slicer 版本5.7 2 安装torch依赖包: 2.1 进入安装目录C:\Users\wangzhenlin\AppData\Local\slicer.org\Slicer 5.7.0-2024-09-21\bin&#xff0…

PostgreSQL技术内幕12:PostgreSQL事务原理解析-锁管理

0.简介 本文介绍PG中的锁技术,主要包括PG中两阶段锁的介绍和PG中各种不同级别的锁,死锁问题介绍,以及如何去查看锁。 1.PG中两阶段锁 1.1 需要锁机制的原因 PG中的隔离性是通过MVCC和两阶段锁实现的,有了MVCC为什么还要使用悲…

python全栈学习记录(十八)re、os和sys、subprocess

re、os和sys、subprocess 文章目录 re、os和sys、subprocess一、re1.正则字符2.正则表达式的使用3.group的使用4.贪婪匹配与惰性匹配5.其他注意事项 二、os和sys1.os2.sys 三、subprocess四、打印进度条 一、re python中的re模块用来使用正则表达式,正则就是用一系…

基于Springboot企业员工人事管理系统JAVA|VUE|SSM计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

研一上课计划2024/9/23有感

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、需要认真上课的1.应用数理统计(开卷考试)2.最优化方法(开卷考试)3.跨文化交际(主题演讲20课堂讨…

基于SpringBoot和Vue的餐饮管理系统

基于springbootvue实现的餐饮管理系统 (源码L文ppt)4-078 第4章 系统设计 4.1 总体功能设计 一般个人用户和管理者都需要登录才能进入餐饮管理系统,使用者登录时会在后台判断使用的权限类型,包括一般使用者和管理者,一…

手写SpringMVC(简易版)

在上一篇博客中说到这里我们要进行手写SpringMVC,因此最好是将上一篇博客中的SpringMVC源码分析那一块部分搞懂,或者观看动力节点老杜的SpringMVC源码分析再来看这里的书写框架。 首先我们要知道对于一个完整系统的参与者(即一个完整的web项…

Spring Cloud :Hystrix实现优雅的服务容错

目录 Hystrix概述:第一个Hystrix程序步骤1:创建父工程hystrix-1步骤2:改造服务提供者步骤3:改造服务消费者为Hystrix客户端(1)添加Hystrix依赖(2)添加EnableHystrix注解(…

共享单车轨迹数据分析:以厦门市共享单车数据为例(六)

副标题:.基于POI数据的站点功能混合度探究——以厦门市为例 为了保证数据时间尺度上的一致性,我们从互联网上下载了2020年的POI数据,POI数据来源于高德地图 API平台,包括名称、大小类、地理坐标等。并将高德地图 POI数据的火星坐标 系 GCJ-0…

轻松搭建企业报修平台,零代码解决方案

在当今竞争激烈的商业环境中,企业的高效运营离不开稳定的设备和设施。而当设备出现故障时,一个高效的维修报修平台就显得至关重要。那么,如何零代码搭建企业内部维修报修平台呢? 一、明确需求与目标 在搭建维修报修平台之前&…

Apache APISIX学习(2):安装Grafana、prometheus

一、Grafana安装 1、介绍 Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测 (System Monitoring) 工具。它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它…

day01——通过git进行管理项目

新建仓库 IDEA新建本地仓库,并上传本地代码将代码上传到远程仓库 不同版本的idea,方式不同,自行摸索

鸿蒙界面开发——组件(10):单选框Radio复选框checkbox 下拉框select 多条件筛选Filter

单选框Radio 单选框一直会有这个圆圈,在选中和未选中之间切换状态。 Radio通过调用接口来创建,接口调用形式如下: Radio(options: RadioOptions) Radio(options: {value: string, group: string ,indicatorType:RadioIndicatorType,(新增) …

基于SSM的家政服务网站【附源码】

基于SSM的家政服务网站(源码L文说明文档) 目录 4 系统设计 4.1 系统概述 4.2 系统结构 4.3. 数据库设计 4.3.1 数据库实体 4.3.2 数据库设计表 4.4 数据表 第5章 系统详细设计 5.1管理员功能模块 5.2用户功能模块 5.3前…

STM32F407单片机编程入门(二十四) USB口介绍及CDC类虚拟串口通讯详解及源码

文章目录 一.概要二.USB2.0基本介绍及虚拟串口介绍三.STM32F407VET6单片机USB模块框图四.STM32单片机USB从机模式五.STM32F407VET6 USB设备CDC类六.CubeMX配置一个USB虚拟串口收发例程七.CubeMX工程源代码下载八.小结 一.概要 STM32F407VET6 USB虚拟串口是一种采用STM32F407VE…

【测试】什么是需求?

测试的概念:验证软件的特性是否满足用户的需求。软件测试领域:软件测试工程师、软件测试开发工程师 需求的概念 在企业中,经常会听到俩个词:用户需求和软件需求。 例如:开发人员与产品人员出现冲突... 产品同学要求开…

ROG NUC:重塑未来,从“芯”开始

ROG NUC以令人惊叹的紧凑身形、强大配置,从“芯”出发,重塑我们对科技生活的想象,让玩家感受由微缩主机带来的性能风暴。 至强“芯”脏,性能巅峰 ROG NUC至高搭载英特尔酷睿Ultra9处理器,采用先进的制程工艺&#xff…

【C++】STL详解之string类

目录 什么是STL STL的版本 STL的六大组件 STL的缺陷 一.string的定义方式 二. string的插入 1.使用push_back进行尾插 2.使用insert插入 三.string的拼接 四.string的删除 1.使用pop_back进行尾删 2.使用erase进行删除 五.string的查找 1.使用find正向搜索第一个…

设计模式 策略模式(Strategy Pattern)

策略模式简绍 策略模式(Strategy Pattern)是一种行为设计模式,它使你能在运行时改变对象的行为。该模式定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法独立于使用它的客户而变化。 …