CAPL创建与语法简介

2024-04-03 20:08
文章标签 语法 创建 简介 capl

本文主要是介绍CAPL创建与语法简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


CAPL 语言和C语言基本语法很相似,只是没有指针,list, set 等概念。


如何通过CANOE 创建自动测试节点

 

1.      创建一个CANoe configuration

2.      点击viewàSimulation Setup

3.      点击右键->insert xml test moudle



4.       右键点击新创建的XMLNode->Configuration 


5.      Test Script添加Test CaseXML

6.       点击TAB Components 进行创建或添加Test case files(.can)


7.      点击确认返回

8.      右键XML NODE->Edit *.can 进行编辑Test Casefile(.can)



整体结构

 

通过CAPL 语言编写的测试用例与方法需要以 .can 为扩展名的文件打开


属性页

 

Includes

同C语言中Includes 一样,可以包含其他.can文件,进而引用其他文件的内容


Variables

 

全局变量定义区域,主要分为以下几种类型

Integers

Ø  byte

Ø  word

Ø  dword

Ø  int

Ø  long

Ø  qword

Ø  int64

Floating point numbers

 

Ø  float

Ø  double

Individual characters

Ø  char

Map

 

float m[float];

m[4.1] = 5.5; //key is 4.1 (float)  and value is 5.5 (float)

m[5.3] = 6.6;

 

write ("4.1 is mapped to %2.2lf",m[4.1]);

write ("5.3 is mapped to %2.2lf",m[5.3]);

 

for (float mykey : m)

{

  write("%2.2lf is mapped to %2.2lf.", mykey, m[mykey]);

}

Enum

和C语言定义Enum 类型一致

 

Struct

和C语言定义结构体类型一致

注意:结构体属性只能是基本数据类型,不能是message类型,即使编译不存在问题


Message




Error Frame



System

与System相关的事件触发器

可以通过CANBrower 添加System事件触发器




CAN

与CAN相关的事件触发器

可以通过CANBrower 添加CAN 事件触发器



on message

The event procedure on message is called onthe receipt of a valid CAN message.

如何定义 message 事件触发

on message 123

React to message 123 (dec, standard identifier), regardless of receiving chip

on message 123x

React to message 123 (dec, extended identifier), regardless of receiving chip

on message 0x123

React to message 123 (hex, standard identifier), regardless of receiving chip

on message 0x123x

React to message 123 (hex, extended identifier), regardless of receiving chip

on message EngineData

React to message EngineData

on message CAN1.123

React to message 123 if it is received by CAN1 chip

on message *

React to all messages

on message CAN2.*

React to all messages received by CAN2 chip

on message 0,1,10-20

React to messages 0, 1 and 10 through 20

 

如何判断收到message 类型

on message * {
if (this.DIR == RX) {
write("This is RX message");
}
if (this.DIR == TX) {
write("This is TX message ");
}
}

on errorFrame

The event procedure on errorframe is calledwhen an error state (Error Frame) occurs on the bus.

 

如果通过errorcode进行区分

on errorFrame
{
   switch (this.ecc & 0x20)
   {
      case (0x20): // in case of reception error
         write ("%d Ch %dRxErr", this.time, this.can);
         return;
      case (0): // in case of transmission error
         write ("%d Ch %dTxErr", this.time, this.can);
         return;
   };
}

on errorActive

CAN controller goes to ErrorActive.

 

重要属性,通过this 进行访问

errorCountRX (Receive error counter)

errorCountTX (Transmit error counter)

can (Assign the channel)

 

on errorPassive

CAN controller goes to ErrorPassive.

 

重要属性,通过this 进行访问

errorCountRX (Receive error counter)

errorCountTX (Transmit error counter)

can (Assign the channel)

 

on warningLimit

CAN controller reaches the Warning Limit.

 

重要属性,通过this 进行访问

errorCountRX (Receive error counter)

errorCountTX (Transmit error counter)

can (Assign the channel)

 

 

on busOff

CAN controller goes to Bus Off.

 

重要属性,通过this 进行访问

errorCountRX (Receive error counter)

errorCountTX (Transmit error counter)

can (Assign the channel)

 

 

Function

 

定义全局方法

格式: 返回类型  方法名(参数….)


Test Cases

 

定义全局测试用例

格式:testcase 名称


重要的系统API

Message Functions 


Signal Functions


Test Functions


Wait Functions


String Functions


Time Functions 


Trigonometric and Mathematical Functions


File Functions 


Memory Functions


CANoe and CANDB Functions



这篇关于CAPL创建与语法简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Java中对象的创建和销毁过程详析

《Java中对象的创建和销毁过程详析》:本文主要介绍Java中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c