Vector - CAPL - 简介及数据结构
对于想进入车载行业或者已经在车载行业工作的朋友对于CAPL这个词都会相当的熟悉,都知道他是做车载网络测试脚本的语言,并且跟C有点类似,但是它到底是什么呢?CAPL全称(Communication Access Programming Language),它可以对CANoe中的网络节点、测试节点、模拟节点,以及vector工具链下各种硬件进行软件控制;常用软件开发工具有Vector CAPL Brower和vTESTstudio两种工具,我们可以通过这两种工具进行各种相关软件的开发。
Vector CAPL Brower
优点:
免费;这个是在CANoe软件下的一个模块,可供大家免费试用
开发简单,可以直接开发完成后可直接在CANoe中运行,简单功能无需其他配置(当然如果实现复杂功能还是需要配置)
资源占用少,这个编辑工具非常的轻巧,无需电脑过高的配置
缺点:
a. 很难实现大规模的自动化脚本开发,平台本身决定的,有兴趣的话我们可以细说
b. 对于复杂的脚本编辑较为困难(这里的苦难并非开发困难,而是维护困难),就算是在开发之处进行代码架构设计,依然很难实现大型平台化,基本以单个模块的脚本形式作为一个工程实现
c. 后期维护困难,由于现在各家公司项目基本都是十几个、几十个不等,这就导致需要不同的测试功能区匹配,也需要同时去维护,这就极大的增加了工程师的工作量,增加工作负担。
vTESTstudio
优点:
对于脚本的整体性管理,我们可以将所有需要的脚本放在一个底层下进行管理,例如常用的功能报文的发送,当我们封装好后,可以在网络管理、CAN通信、诊断等多种测试模块中调用,极大的避免重复造轮子。
代码分层设计,基础函数作为底层进行封装,不断的积累软件财富,生成应用函数进行分门别类,保证各个项目所需,最终实现的代码架构清晰明了。
降低开发人员开发难度,封装好底层函数,对于后期新增用例,无需开发底层函数,只需要对已有的应用函数进行拖拽编辑即可完成脚本开发。
高覆盖度,vTESTstudio可以使用与当前vector工具链所有需要编程的自动化开发。
图形化编辑,vTESTstudio包含图形化编辑用例和脚本,更加清晰的给工程师提供编程思路和方向
缺点:
非免费,这个跟CANoe软件一样,也是一个付费软件,需要license才能够使用,不过如果想要高度平台化脚本,可以只购买vTESTstudio,无需购买图形化编辑工具,这样能省20%价格。
好吧处理不免费,相对于Vector CAPL Brower我好想找不出其他的缺点。
数据结构类型
整数类型&浮点型&字符型:
整型 (byte, word, dword, int, long, qword, int64)
例如: long 1
浮点型 (float, double)
例如: double d
字符型 (char)
例如: char ch
数据类型跟C语言极其想象,其中int、long、int64、float、double以及char类型跟C完全一样的用法;不过在这个基础上为了更加方便编程,他还增加了byte、word、dword、qword等类型,更加方便脚本开发。其中byte对应C中int8,word、dword、qword分别代表整数单字节、双字节和四字节变量的定义。这些变量在我们的车载网络脚本开发过程非常的方便,极大减少我们错误出现的概率。
枚举类型
例如:enum Colors c
在CAPL中定义枚举类型的方式与在C中完全相同;元素名称必须是唯一的。如果制定了值就按照指定值来使用;如果为使用指定值,所有后续元素的值均为上一个值加1。常用于脚本开发中switch-case-statement、状态名称等地方使用;如果Enum类型作为返回值则必须带上关键字enum。
结构体类型
例如: struct TCPMessage m.
可对整数、浮点数、单个字符和枚举的引用;但结构化类型可以用类似于C的方式在CAPL中声明,不过与C中的使用还是有一定的区别,大家使用的时候可以参考下帮助文档。
定时器
Timers (timer, mstimer)
例如: timer t
CAPL中定时有两种,一种是毫秒定时器(msTimer),一种是秒定时器(Timer);这块特别是对于我们周期性检测或者周期报文类发送非常好用;
报文类型&信号类型
Messages (message, pdu, pg, linFrame, frFrame, frPDU, mostMessage, mostAMSmessage, mostrawmessage, gmlanMessage, j1587Param); either an actual message or *.
例如: message 100 can_msg, linFrame * lin_msg
Signals, only with *
例如: signal * s or serviceSignalString * s
这个可以说是CAPL中独有的类型,无论是CAN、LIN还是MOST等其他我们所有使用的车载协议类型,均有对应的报文类型结构,在脚本开发中我们可以很好用的使用这些类型进行编程,对于代码的整洁性、阅读性都有极大的提高。如示例,无论是我们想要定义个固定ID的报文还是非固定ID的皆可,后续即可通过can_msg.dlc/byte()/fdf等对应的名称进行赋值使用。
信号与报文使用方法类似,不过信号类型依赖于dbc文件,相较于message来说,使用范围略小
系统变量类型
例如:envvarInt * ev
系统变量,带类型和*指示。
可能的类型:Data、Int、Long、Float、String、IntArray和FloatArray。
诊断请求&应答
例如:diagRequest * dr
例如:diagResponse * dr
这部分主要适用于诊断类型的定义,使用范围也主要是诊断相关的函数。
on diagRequest FaultMemory_ReadAllIdentified
{diagResponse this resp;// Set the number of bytes needed to transfer the response with 2 DTCs (in this example: overall 11 bytes)
diagResize( resp, 11); // 3 Bytes Header (SID, Subfunction, AvailabilityMask) + 2 * 4 Bytes for DTCs = 11 bytes// Set the value of the DTCsdiagSetComplexParameter ( resp, "ListOfDTC", 0, "DTC", 0x000001 );diagSetComplexParameter ( resp, "ListOfDTC", 0, "DtcStatusbyte", 0xF1 );diagSetComplexParameter ( resp, "ListOfDTC", 1, "DTC", 0x000002 );diagSetComplexParameter ( resp, "ListOfDTC", 1, "DtcStatusbyte", 0xF3 );diagSendResponse ( resp );
}
// Indicate all requests in the write window
diagRequest *
{char objectPath[200];char currentEcu[100];this.GetObjectPath(objectPath, elcount(objectPath));DiagGetCurrentEcu(currentEcu, elcount(currentEcu));write( "Request %s to ECU %s", objectPath, currentEcu);output(this); // forward down the measurment branch
}
以上是CAPL函数中常见的变量类型,不过我介绍的这块主要是适用于CAN、LIN相关的,对于Flexrex或者MOST相关的并没有进行介绍,使用范围太窄,如果有需要欢迎评论区沟通。
相关文章:
Vector - CAPL - 简介及数据结构
对于想进入车载行业或者已经在车载行业工作的朋友对于CAPL这个词都会相当的熟悉,都知道他是做车载网络测试脚本的语言,并且跟C有点类似,但是它到底是什么呢?CAPL全称(Communication Access Programming Language&#…...
20230304英语学习
What Would Happen if the Moon Disappeared Tomorrow? 如果明天月球消失了会怎样? The closest object to our planet, the Moon, may seem like Earth’s little sibling.Since its birth, the satellite has mostly just hung around, playing gravitational t…...
【基础算法】单链表的OJ练习(3) # 移除链表元素 # 相交链表 #
文章目录前言移除链表元素相交链表写在最后前言 本章的OJ练习也是相对简单的,只要能够理解解题的思路,并且依照这个思路能够快速的写出代码,我相信,你的链表水平已经足够了。 对于OJ练习(2) : ->传送门…...
【自用】SpringBoot项目通用类整理
文章目录全局Json序列化Controller日志切面全局异常拦截GlobalExceptionHandlerApiResultBusinessExceptionResponseEntityUtil全局返回体包装MP自动填充接口文档配置类自定义Async异步线程池本文主要整理各类项目中通用的配置类、工具类,便于复查自用。 全局Json序…...
动态规划法(总述)多阶段决策最优化问题
动态规划: 研究最优控制问题提出的 该问题有n个输入,问题的解由这n个输入组成,这个子集必须满足事先给定的条件,这些条件称为约束条件,满足约束条件的可行解可能不只有一个为了衡量可行解的优劣,通常以一些函数的形式&…...
MySQL跨服务器数据映射
MySQL跨服务器数据映射环境准备1. 首先是要查看数据库的federated引擎 开启/关闭 状态2. 打开任务管理器,并重启mysql服务3. 再次查看FEDERATED引擎状态,引擎已启动映射实现问题总结在日常的开发中经常进行跨数据库进行查询数据。 同服务器下跨数据库进…...
利用反射实现通过读取配置文件对类进行实例化-课后程序(JAVA基础案例教程-黑马程序员编著-第十二章-课后作业)
【案例12-3】:利用反射实现通过读取配置文件对类进行实例化 【案例介绍】 1.案例描述 现在有一个项目,项目中创建了一个Person类,在Person类中定义了一个sleep()方法。在工程中还定义了一个Student类继承Person类,在Student类中…...
1.2 CSS文本属性
CSS Text(文本)属性: 定义文本外观,颜色,装饰,缩进,行间距来修饰文本 文本样式 文本缩进 text-indent文本水平对齐方式:text-align文本修饰:text-decoration行高 line-height CSS文本颜色属性…...
SpringCloud之认识微服务
文章目录一、传统项目转型二、走进 SpringCloud三、微服务项目搭建3.1 创建一个 SpringBoot 项目3.2 创建三个 Maven 子工程3.3 为子工程创建 application.yml3.4 引入依赖3.5 数据库 建库建表3.6 编写业务提示:以下是本篇文章正文内容,SpringCloud系列学…...
【go语言之thrift协议二之server端分析】
go语言之thrift协议二serverthrift.TProtocolFactoryTTransportReadWriteCloserContextFlusherReadSizeProviderTProtocolrunServerNewTServerSocketNewCalculatorHandlerNewCalculatorProcessorNewTSimpleServer4server.ServeListenAcceptLoopprocessRequests在上一篇文章分析…...
【办公类05-03】Python批量修改文件名前面的序号(已有的序号错了,需要改成正确的号码)
背景需求下载教程,手动输入编号,有一个编号错误,导致后面所有编号都错了。30实际是29,以此类推怎样才能快速修改编号数字?前期考虑到可能要改编号,所以在每个编号后面加“ ”(空格)&…...
定向模糊测试工具Beacon基本用法
Beacon是一个定向模糊测试工具,给定行号,能够定向探索行号附近的代码区域。主要思想是采用静态分析的方法获取到与目标有关的变量的最弱前置条件(weakest precondition)的信息,并在相关位置插入断言,来提前…...
《程序员面试金典(第6版)》面试题 02.01. 移除重复节点
题目描述 编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。 示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3] -示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2] 提示: 链表长度在[0, 20000]范…...
如何对web系统开展无障碍测试
Accessibility test(无障碍测试)是一种测试方法,旨在评估软件、网站或其他数字产品的可访问性,以确保它们能够被身体残障或其他特殊需求的用户使用。这些测试通常包括使用辅助技术,如屏幕阅读器和放大器,以…...
使用vite+vue3.0 创建一个cesium基础应用 ----01 项目搭建
使用vitevue3.0 创建一个cesium基础应用 ----01 项目搭建 1.使用yarn创建一个vite项目 我们可以在vite官网找到vite创建项目的命令 https://cn.vitejs.dev/ 可以使用yarn创建项目选择使用vue3.0框架,语言使用js 创建完成后结构如下: 2.找到vite社区中的…...
【Python学习笔记】第二十七节 Python 多线程
一、进程和线程进程:是程序的一次执行,每个进程都有自己的地址空间、内存、数据栈及其他记录运行轨迹的辅助数据。线程:所有的线程都运行在同一个进程当中,共享相同的运行环境。线程有开始、顺序执行和结束三个部分, …...
【id:18】【20分】B. DS顺序表--连续操作
题目描述建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)该类具有以下成员函数:构造函数:实现顺序表的初始化。插入多个数据的multiinsert(int i, int n, int item[])函数,实现在…...
vi编辑器操作指令分享
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方…...
OSPF与BFD联动配置
13.1.1BFD概念 BFD提供了一个通用的、标准化的、介质无关的、协议无关的快速故障检测机制,有以下两大优点: 对相邻转发引擎之间的通道提供轻负荷、快速故障检测。 用单一的机制对任何介质、任何协议层进行实时检测。 BFD是一个简单的“Hello”协议。两个系统之间建立BFD会…...
jQuery基础
> 🥲 🥸 🤌 🫀 🫁 🥷 🐻❄️🦤 🪶 🦭 🪲 🪳 🪰 🪱 🪴 🫐 🫒 …...
day39|139.单词拆分 背包问题ending
139.单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s "leetcode",…...
Shell脚本编程
Shell编程 视频地址https://www.bilibili.com/video/BV1hW41167NW/?p1&vd_source977d52a6b92ce8b6ae67c16fc61f0428 第一章 Shell概述 大数据程序员为什么要学习Shell呢? 需要看懂运维人员编写的Shell程序偶尔会编写一些简单的Shell程序来管理集群…...
ChatGPT解答:JavaScript保存当前网页页面图片为pdf文件或者word文件,前端用vue2,给出详细的方案和代码
ChatGPT解答:JavaScript保存当前网页页面图片为pdf文件或者word文件,前端用vue2,给出详细的方案和代码 ChatGPTDemo Based on OpenAI API (gpt-3.5-turbo). JavaScript保存当前网页页面图片为pdf文件或者word文件,前端用vue2&am…...
Python基础学习11——文件
我们可以利用python对本电脑文件夹里的文件进行处理,python中提供了一系列相关的方法和函数供我们使用。 读取文件 我们现在在本python文件中有一个txt文件名为Lego,那么我们就可以利用python打开该文件 with open(Lego.txt) as file_text:contents …...
外网用户打不开公司的网站?web服务器端口映射到公网
我们经常会遇到这样的情景,在公司内部可以打开公司的网站,在家里或者外网却打不开,按照网上的做法,重新启动了服务器和iis,还是不行。许多用户设置了路由器端口映射功能,但是端口映射不成功怎么办ÿ…...
【CS224W】(task9)图神经网络的表示能力(更新中!!)
note 基于图同构网络(GIN)的图表征网络。为了得到图表征首先需要做节点表征,然后做图读出。GIN中节点表征的计算遵循WL Test算法中节点标签的更新方法,因此它的上界是WL Test算法。 在图读出中,我们对所有的节点表征&…...
binlog找回误删数据
1、检查当前是否开启binlog存储 输入命令show variables like %log_bin%;,结果如下 可以看到log_bin的值是ON,说明binlog开启了。 2、查找binlog的存储位置 这个去到数据库的my.cnf配置文件中寻找,有一个log_bin的配置 切换到log_bin的目…...
《程序员面试金典(第6版)》面试题 02.03. 删除中间节点
题目描述 若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。 假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。 例如: 传入节点 c(…...
Spring Boot
目录 SpringBoot SpringBoot创建和使用 什么是Spring Boot Spring Boot优点 Spring Boot项目的创建 项目目录介绍和运行 目录介绍 项目运行 SpringBoot核心设计思想 SpringBoot的配置文件 配置文件的作用 配置文件的格式 注意事项 properties配置文件 propertie…...
图论初入门
目录 一、前言 二、图的概念 三、例题及相关概念 1、全球变暖(2018年省赛,lanqiao0J题号178) 2、欧拉路径 3、小例题 4、例题(洛谷P7771) 一、前言 本文主要讲了树与图的基本概念,图的存储、DFS遍历…...
大连市网站制作电话/新东方线下培训机构官网
在使用php开发之中大家都习惯使用gb类库来处理图像信息,但是函数很多的gb类库也是很头疼,使用起来要一个个的查询函数和看官方手册,下面将介绍一个很强大的图像处理工具----ImageMagick,这个在liunx下面处理图像信息将会更简洁。先…...
网络用户提要求找人帮忙做的网站/百度搜索官网
📢前言🌲原题样例:旋转字符串🌻C#方法:判断子串🌻Java 方法:判断子串💬总结📢前言 🚀 算法题 🚀 🌲 每天打卡一道算法题,…...
广东知名网站/网站流量分析报告
我写了一个bash脚本,它在指定的文件夹中找到CSV文件,并使用正确的配置文件将它们管道到logstash中.但是,当运行此脚本时,我遇到以下错误,说关闭进程停止,导致无限循环,直到我用ctrl c手动停止它:[2018-03-22T08:59:53,833][INFO ][logstash.runner ] Starting Logst…...
做网站源代码/百度指数网址
通过kmeans分析出租车数据并进行可视化(1)数据准备(2)创建dataframe(3)kmeans聚类分析(4)调用百度API进行数据可视化(1)数据准备 采用数据为出租车载客时的G…...
合肥网站策划/《新闻联播》今天
作为网页的基本常见特效,我今天趁着中午下班,赶紧试一下,没想到简单的实现了, 不过本来就是入门级的东西,就当打怪升级吧! 效果如图: html: <ul class"nav"><li class"…...
日语网站设计/十大软件免费下载网站排行榜
c语言没有String类型,更没有String.length()方法,那么要怎么求数组长度呢? 数组举例:int arr[]{2,3,1,4}, char str[]{“Hello”} 获得数组长度可以用这个方法: 比如int数组 sizeOf(arr)/sizeOf(int) 可以求出数组长…...