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

相关文章

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

Java Docx4j类库简介及使用示例详解

《JavaDocx4j类库简介及使用示例详解》Docx4j是一个强大而灵活的Java库,非常适合需要自动化生成、处理、转换MicrosoftOffice文档的服务器端或后端应用,本文给大家介绍Jav... 目录1.简介2.安装与依赖3.基础用法示例3.1 创建一个新 DOCX 并添加内容3.2 读取一个已存

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示