【CAPL】CAPL的简单介绍及变量
文章目录
- 前言
- 一、CAPL
- 1.程序结构
- 2.数据类型
- 3.常用关键字
- 4.全局变量与局部变量
- 5.复合类型
- 6.其他类型
- 总结
前言
CAPL(COMMUNICATION Access Programming Laguage)语言是类C语言,语法其实与C语言很相似,但同时包含了一些C++特性,例如指针、事件等。
一、CAPL
1.程序结构
参考下图,一个完整的CAPL程序的结构包含了头文件、全局变量、事件函数、自定义函数等。
2.数据类型
无符号整数
byte (1字节)
word(2字节)
dword(4字节)
有符号整数
int(2字节)
long(4字节)
浮点数
float(8字节)
double(8字节)
CAN消息类型
message
定时器类型
timer(秒为单位)
msTimer(毫秒为单位)
单个字符
char(1字节)
3.常用关键字
- 数据类型关键字:int,byte,long,etc
- 控制语句关键字:if,else
- 存储类型关键字:static。extern
- 其他关键字:const,message
4.全局变量与局部变量
全局变量
- 在variables部分声明全局变量
- 可通过直接赋值进行初始化,如果没有初始化,编译器自动初始化为0
- 全局变量的作用域:整个CAPL文件以及与此文件有链接的其他CAPL文件
局部变量
- 局部变量被静态地创建,初始化只在程序题启动时执行,再次进入程序,局部变量被假定是上一次跳出程序时的值。
- 局部变量的作用域:当前函数体范围内。
5.复合类型
结构struct
- 结构体名在程序中必须唯一
- 简单类型、枚举类型或者其他的结构都可以作为结构体的成员
枚举enum
- 枚举的成员名必须唯一(有替代隐藏数据库中同名的报文和信号的风险)
- 如果没有在声明枚举的同时对成员进行赋值,则编译器将按照成员成名的顺序对成员进行初始化(第一个为0,往后依次加1)
数组array
- CAPL直接用字符串初始化字符数组的行为
- CAPL支持多为数组
- CAPL通过内建函数elCount(数组名)来或得数组成员的个数
6.其他类型
报文
- 使用关键字message来声明一个报文变量,默认CAN报文
- 声明报文变量,有数据库支撑时,完整的声明应包含message ID or message name
- Message ID以x结尾的ID表示扩展帧
- *表示这条报文在声明时还不含有CAN ID
诊断报文
- 通过诊断请求和诊断相应两个对象来实现和ECU之间的诊断服务交互
- 在声明诊断对象时进行初始化
系统变量
系统变量用来描述某种特殊状态(例如某种事件的触发)或者记录测量数据
可通过系统定义和用户自定义系统变量
系统变量的作用域在其命名空间内
定时器CAPL提供了两种定时器变量timer基于秒,msTimer基于毫秒
总结
在本篇中简单介绍了一下CAPL的信息,对其中的结构和变量有了初步了解。
【CAPL】CAPL的简单介绍及变量相关推荐
- 简单介绍nginx 变量使用
Nginx 同 Apache 和 Lighttpd 等其他 Web 服务器的配置记法不太相同,Nginx的配置文件使用语法的就是一门微型的编程语言.可以类似写程序一般编写配置文件,可操作性很大.既然是 ...
- java自学——java的基本讲解和变量、字符串、运算符的简单介绍
java自学--java的基本讲解和变量.数组.字符串.运算符的简单介绍 hello world程序 java程序的结构 java语句的组成介绍 关键字 标识符 标识符的命名规则 分隔符 注释符 空白 ...
- Weka简单介绍与最新详细简单安装以及环境变量配置
一.Weka简单介绍 Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化(与之对应的是SPSS公司商业数 ...
- linux加protobuf变量环境,protobuf简单介绍和ubuntu 16.04环境下安装教程
protobuf简单介绍 protobuf是谷歌的开源序列化协议框架,结构类似于XML,JSON这种,显著的特点是二进制的,效率高,主要用于通信协议和数据存储等方面,算是一种结构化数据的表示方法. p ...
- 简单介绍一下R中的几种统计分布及常用模型
统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...
- iOS开发UI篇—UIWindow简单介绍
iOS开发UI篇-UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...
- django中使用celery简单介绍
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...
- JavaScript词法作用域的简单介绍
by Michael McMillan 迈克尔·麦克米兰(Michael McMillan) JavaScript词法作用域的简单介绍 (An easy intro to Lexical Scopin ...
- 简单介绍4种限流算法!(固定窗口计数器算法、滑动窗口计数器算法、漏桶算法、令牌桶算法)...
作者:架构小菜 链接:https://www.jianshu.com/p/7987bf427b5b 简单介绍 4 种非常好理解并且容易实现的限流算法! 一.固定窗口计数器算法 规定我们单位时间处理的请 ...
最新文章
- [20180627]测试bbed是否支持管道命令.txt
- Android Studio一直Download fastutil-x.x.x.jar
- opencv 使用cvload加载xml出现错误原因解析及方法
- Qt:Qt实现飞秋拦截助手—Mac地址扫描器
- 安装虚拟环境virtualenv与virtualenvwrapper在centos7系统上
- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_
- 甘特图看起来很生硬?教你使用智能颜色装饰你的甘特图!(一)
- UVALive 5000 Underwater Snipers --二分
- J-link固件修复记录
- 写了一个快速阅读训练的小软件
- Vue下载文件不成功及下载文件名称问题
- 三极管基极限流电阻计算
- 小学-知识与能力【5】
- 100% 解决华硕 Armoury Crate 奥创软件安装及更新问题。解决错误码 502 等问题
- 小学计算机教师业务笔记,2016-2017学年度小学教师业务学习笔记
- 报错:further occurrences of HTTP request parsing errors will be logged at DEBUG level
- Coding and Paper Letter(五十)
- 开源深度学习加速器(NPU)NVDLA介绍
- 中国大数据分析行业研究报告
- 微信小程序为什么不用HTML5、CSS,自己搞了个WXML、WXSS,很多框架用不了,好处一点不知道?