当前位置: 首页 > news >正文

基于C语言对CAPL语法基础的理解

.CAPL是基于C语言开发的,专门用于CANalyzer和CANoe工具环境,但是CAPL简化了C语言,移除了复杂的指针概念,和一些不常用的关键字。

2.CAPL 脚本是基于事件驱动的,任何事件都有可能触发CAPL脚本的执行,比如,按键事件,定时器事件,执行测试等;如果没有事件发生,那么CAPL程序是“闲置的”。

3.编写CAPL 的IDE叫做 CAPL Browser .

4.字符串数据类型在CAPL中不支持.

5.使用CAPL编写时,小写字母和大写字母是不同的变量,但是CAPL支持的关键字是不区分大小写的,比如 INT a; 和int a;是一样的。

6.CAPL 中Variables中定义的是全局变量

  • includes : 非事件,引用.cin和dll文件的功能块
  • 数据类型float和double都是占8个字节
  • 整形可以是十进制和十六进制
  • 浮点数可以是十进制数,或者科学计数法
  • 字符常量 是用单引号,括起来的一个字符
  • 确保字符串数组定义时的大小总是字符串长度 + 1,因为结束符\0也占用一个字符
  • CAPL支持使用ASCII字符集
  • 如果已经定义过了一个字符串数组,不可以直接给它赋值的,
  • 可行的一种方法,是通过CAPL自带的字符串操作函数实现

7.Message使用

message是CAPL独有的数据类型,可以用来仿真,改写,创建报文等,是CANoe 仿真测试的比较核心内容

例子:

/*标准帧*/
message 0xA m1;           //用消息id声明can消息   十六进制
message 100 m2;           //用消息id声明can消息   十进制
message EngineData m3;    //用总线上加载的dbc数据库(EngineData)里消息名称声明can消息
message 0x100 msg1={DLC=8};  //定义消息数据长度
/*扩展帧*/ 
message 100x msg1;         //消息id后面加x,表示扩展帧   十进制
message 0x123456x msg2;    //消息id后面加x,表示扩展帧   十六进制 
 
message * msg1;         //“ * ” 表示声明一条任何ID的报文(不确定报文ID)  用于存储CAN信息
message * msg1 = { DLC = 8};
 
/*报文发送至总线上*/
message * msg1;
msg1.dlc = 8;
message.ID = 0x100;
output(msg1);          //报文发送至总线上必须要有ID

8.定时器使用

CAPL提供两种定时器: 毫秒计时器(msTimer) 和 秒计时器(timer),必须再全局变量中定义定时器

  • 使用一个定时器分一下三个步骤:

    1. 声明一个计时器变量
    2. 在事件过程(preStart 除外)或用户定义的函数中预先设置计时器
    3. 为该计时器定义一个on timer 事件

例子:

/*@!Encoding:ASCII*/
variables
{
  char timeBuffer[30];
  mstimer timer1; // define timer1 unit:ms
  timer timer2; // define timer2 unit:s
}
on start
{
  setTimer(timer1,1000); // initialize timer to run for 100 msec
  setTimer(timer2,10); // initialize timer to run for 100 s
}
on timer timer1
{
  getLocalTimeString(timeBuffer);
  write("%s:timer1 time out",timeBuffer);
  setTimer(timer1,1000); // reset timer
}
on timer timer2
{
  getLocalTimeString(timeBuffer);
  write("%s:timer2 time out",timeBuffer);
  cancelTimer(timer1); // cancel timer
}

9.testcase使用

testcase是CAPL语法独有的一种语法模块,常见的调用testcase 的方法有两种 ,一种是XML TestModule ,另一种是CAPL TestModule

10.on key使用

CAPL中键盘事件的定义是基于

On key 'key value'

{

}

的格式来定义的,注意Key value是在单引号中的。

11.必须的工具栏:

  • Output :开发的时候,编译可以实时发现脚本的错误信息
  • Symbols: 在CANoe中加载的DBC,CDD文件的元素,定义的系统变量等都可以直接这里找的到,随用随查看
  • CALP Functions:CAPL内置了很多自己专用的函数,不需要include任何文件,可以在CAPL中直接使用。

相关文章:

  • 局域网网站建设网站快速排名优化
  • 网站大全免费完整版微信广告投放推广平台多少费用
  • 网站建设的招标文件青岛运营网络推广业务
  • 上海网站开发制作太原百度seo排名
  • 如何对网站进行推广重庆百度整站优化
  • 设计交流的网站制作网页
  • 天梯赛:L2-001 紧急救援
  • 6.6.5 SQL访问控制
  • 第16届蓝桥杯模拟赛题解 第三场 Java
  • stm32使用(无线串口)实现收发、判断数据+DMA(HAL库)
  • 2022年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题10)-网络部分解析-附详细代码
  • 跨端方案选型:对比Uni-app与Taro在复杂电商项目中的技术选型依据参考
  • 大白话解释负载均衡Nginx是什么 有什么用 怎么用#
  • ClkLog里程碑:荣获2024上海开源技术应用创新竞赛三等奖
  • 记录深度学习中有用的终端命令
  • 第三章 组件(11)- 动态组件与表格组件
  • 【Qt】MVC设计模式
  • Java线程池
  • LLVM - 编译器前端 - 将源文件转换为抽象语法树
  • 在docker容器中运行Ollama部署deepseek-r1大模型
  • C# String 常用操作方法详解
  • 检查SSH安全配置-sshd服务端未认证连接最大并发量配置
  • React Native 核心技术知识点快速入门
  • 用大白话解释日志处理Log4j 是什么 有什么用 怎么用
  • 45.matlab产生正弦叠加信号并保存为txt文本
  • 智能驾驶ai算法学习路线图