文章目录

  • 前言
  • 一、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的简单介绍及变量相关推荐

  1. 简单介绍nginx 变量使用

    Nginx 同 Apache 和 Lighttpd 等其他 Web 服务器的配置记法不太相同,Nginx的配置文件使用语法的就是一门微型的编程语言.可以类似写程序一般编写配置文件,可操作性很大.既然是 ...

  2. java自学——java的基本讲解和变量、字符串、运算符的简单介绍

    java自学--java的基本讲解和变量.数组.字符串.运算符的简单介绍 hello world程序 java程序的结构 java语句的组成介绍 关键字 标识符 标识符的命名规则 分隔符 注释符 空白 ...

  3. Weka简单介绍与最新详细简单安装以及环境变量配置

    一.Weka简单介绍 Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化(与之对应的是SPSS公司商业数 ...

  4. linux加protobuf变量环境,protobuf简单介绍和ubuntu 16.04环境下安装教程

    protobuf简单介绍 protobuf是谷歌的开源序列化协议框架,结构类似于XML,JSON这种,显著的特点是二进制的,效率高,主要用于通信协议和数据存储等方面,算是一种结构化数据的表示方法. p ...

  5. 简单介绍一下R中的几种统计分布及常用模型

    统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...

  6. iOS开发UI篇—UIWindow简单介绍

    iOS开发UI篇-UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...

  7. django中使用celery简单介绍

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...

  8. JavaScript词法作用域的简单介绍

    by Michael McMillan 迈克尔·麦克米兰(Michael McMillan) JavaScript词法作用域的简单介绍 (An easy intro to Lexical Scopin ...

  9. 简单介绍4种限流算法!(固定窗口计数器算法、滑动窗口计数器算法、漏桶算法、令牌桶算法)...

    作者:架构小菜 链接:https://www.jianshu.com/p/7987bf427b5b 简单介绍 4 种非常好理解并且容易实现的限流算法! 一.固定窗口计数器算法 规定我们单位时间处理的请 ...

最新文章

  1. [20180627]测试bbed是否支持管道命令.txt
  2. Android Studio一直Download fastutil-x.x.x.jar
  3. opencv 使用cvload加载xml出现错误原因解析及方法
  4. Qt:Qt实现飞秋拦截助手—Mac地址扫描器
  5. 安装虚拟环境virtualenv与virtualenvwrapper在centos7系统上
  6. Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_
  7. 甘特图看起来很生硬?教你使用智能颜色装饰你的甘特图!(一)
  8. UVALive 5000 Underwater Snipers --二分
  9. J-link固件修复记录
  10. 写了一个快速阅读训练的小软件
  11. Vue下载文件不成功及下载文件名称问题
  12. 三极管基极限流电阻计算
  13. 小学-知识与能力【5】
  14. 100% 解决华硕 Armoury Crate 奥创软件安装及更新问题。解决错误码 502 等问题
  15. 小学计算机教师业务笔记,2016-2017学年度小学教师业务学习笔记
  16. 报错:further occurrences of HTTP request parsing errors will be logged at DEBUG level
  17. Coding and Paper Letter(五十)
  18. 开源深度学习加速器(NPU)NVDLA介绍
  19. 中国大数据分析行业研究报告
  20. 微信小程序为什么不用HTML5、CSS,自己搞了个WXML、WXSS,很多框架用不了,好处一点不知道?

热门文章

  1. jQuery的jsTree入门使用
  2. 天龙八部TLBB从0到1搭建教程-中
  3. 2020年4月份DB-Engines数据库最新排名
  4. PnetLab模拟器一键汉化教程
  5. python设计麻将_Python写打麻将程序
  6. keras中的目标函数和优化函数
  7. 基础攻防实验-DVWA-秋潮-网络配置
  8. MYSQL8.0远程连接出现1045错误(Linux)
  9. 我的2020年记-大浪潮下的小小打工人
  10. java读取含有合并行的excel