0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CAPL编程语言快速入门

北汇信息POLELINK 2022-09-17 16:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

提到CAPL,相信各位一定不陌生,它是由Vector公司开发的类似于C语言的面向过程编程语言,是CANoe和CANalyzer中可用的编程语言。CAPL中程序块的执行由事件控制,在专用的编译器中开发和编译,这样可以访问数据库中的所有对象以及系统变量,作为汽车电子工程师,在工作中会经常用到。

CAPL可以在CANoe界面Tools>>CAPL Browser中打开。

pYYBAGMlf1eAItJYAACC7Felt7Q468.png

图1CAPL打开方式

CAPL界面由功能区、程序框架浏览树、输出窗口、编辑区、访问区五部分组成。

poYBAGMlf1iAeZYtAAKe0OLiot4024.png

图2CAPL界面

顾名思义,程序编辑区就是编写CAPL脚本的区域;程序架构浏览树起目录的作用,可以把编辑区定位到编写的事件或函数类型的语句;输出窗口可以输出编译过程中的事件和使用搜索时定位到的结果;访问区能够访问到CANoe工程加载的数据库中的信号、创建的系统变量以及CAPL函数库中的语句,直接从右侧访问区拖拽到中间编辑区使用(注意:工程创建路径中不能有中文,否则访问不到数据库文件)。

功能区由五部分构成,首先是File菜单栏,与大多数软件相同,它是文件创建、保存、加载、设置等功能区域。

pYYBAGMlf1eAVJfdAAGEX2DbJ08313.png

图3File菜单栏

Home功能区提供了CAPL编译常用功能,包括代码编译、查找、替换、屏蔽、取消屏蔽等功能。

pYYBAGMlfx-AKr85AACc3nFrtCw088.png

图4Home功能区

Filter功能区的作用是管理CAPL的函数库,可以在函数访问区中屏蔽掉不需要的函数。

pYYBAGMlfyOABh6TAACwHg2SLls833.png

图5Filter功能区

Debug功能区是调试的区域,提供了一些基本的调试操作,一般情况下不通过debug模式来调试脚本。基本上编译一次,存在错误可以通过Output输出窗口获得错误类型并进行更改。如果脚本编译成功之后,仍然不能满足测试步骤的输出,一般会使用Write窗口进行调试。

poYBAGMlfx2AFl_XAAB5gxk1EKA062.png

图6Debug功能区

Layout功能区主要是针对CAPL用户的页面展示。例如进行水平分区、垂直分区等操作方便用户进行脚本编写。

poYBAGMlfx6AG76sAACDVhMSLCQ677.png

图7Layout功能区

CAPL应用场景:

  1. 节点仿真

关联Simulation Setup中的ECU节点,实现ECU节点仿真和整车网络仿真。

pYYBAGMlfyCAL1uTAACDQh9-i-U949.png

图8SimulationSetup窗口

  1. 测试功能

关联Simulation Setup中的Test Module模块或是Test菜单中的Test Setup,结合TSL(Test Service Library,测试服务库)进行测试功能开发。

poYBAGMlfyGAECgkAAB4fih5Id8151.png

图9TestSetup窗口

  1. 分析功能

关联Measurement Setup窗口功能模块中的Program Node,实现总线过滤、分析功能。

poYBAGMlfyKAHqMMAACe4NminBU794.png

图10MeasurementSetup窗口

CAPL脚本结构:

一个完整的CAPL脚本由三部分组成:变量、各种事件和自定义函数。

pYYBAGMlfyOABnu2AAEOt1t_2TM813.png

图11CAPL的三部分

CAPL的事件类型包含三种:总线事件、属性事件、时间事件。CAPL常用的事件类型如下图所示。

poYBAGMlfySAIg5xAALJDR5IEYY494.png

图12MeasurementSetup窗口

CAPL常用函数:

下面以CANoe中Easy工程的light.can脚本为例介绍CAPL中的常用函数,该脚本与Panel联用实现转向灯仿真。

pYYBAGMlfySAfjDVAAAyfIEcFVE402.png

图13声明全局变量

上图是CAPL中的全局变量声明,其中 ‘msTimer’为声明以ms为单位的计时器;‘const int’为声明int类型的常值变量,该变量的值无法改变;‘int’为声明int类型的变量,该类型变量有符号,长度为2字节。

poYBAGMlfySALF5xAAAXlRWFibE461.png

图14系统事件

onstart’是系统事件,测量开始执行会触发该事件,也就是点击Start按钮触发。

poYBAGMlfymAd-DVAAChdCFAvV8120.png

图15CAN消息事件

onmessage’是CAN消息事件,接收到指定消息时执行。‘onmessageLightState’是对名字为LightState的报文反应,除直接使用字符串外,还可以使用报文ID指定触发报文。‘onmessage123’是对ID为123(dec)的报文反应;‘on message0x123’ 是对ID为123(hex)的报文反应;‘on message*’是对所有的报文反应;‘on message100-200’是对ID为100-200间的报文反应。

poYBAGMlfymAR7bTAABB-QqteBA941.png

图15系统变量事件

onsysvarsysvar’是系统变量事件,指定的系统变量值改变时执行。与之相对应另一个系统变量事件是‘onsysvar_updatesysvar’,指定的系统变量值更新时执行。

‘setTimer(msTimert,longduration)’是设置定时器函数,他有两个输入参数,第一个为声明的定时器变量,第二个是设定的时间。‘cancelTimer(msTimert)’是取消定时器函数,入参为定时器变量,该函数的作用为取消设定的定时器。

pYYBAGMlfymAPg__AAAkTOfb9bw335.png

图16时间事件

ontimer’为时间事件,定时时间超过时执行,它与设置定时器函数联用。定时器通常应用在实现某个任务循环,在时间事件中写入一个设置定时器函数实现循环。

pYYBAGMlfyaAI4IEAAAf0yAL3TE819.png

onkey’为键盘事件,被指定的键按下时执行。该事件常用于脚本调试。

此外,‘write()’函数在调试脚本中也常使用,该函数基于C语言中的‘printf()’函数,可以将文本消息输出在write窗口中。

注:图片来自Vector。

总结:

北汇信息作为Vector中国的合作伙伴,始终专注于汽车电子领域的新技术和新产品,为整车厂和零部件企业提供完整的研发、测试解决方案,为工程师在汽车领域提供“趁手装备“!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CANoe
    +关注

    关注

    4

    文章

    88

    浏览量

    9907
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA 入门必看:Verilog 与 VHDL 编程基础解析!

    很多开发者第一次接触FPGA,都会有同样的疑问:FPGA是硬件,不是软件,怎么写程序?答案就是用硬件描述语言(HDL),最常用的就是Verilog和VHDL。今天,我们就带你入门,搞清楚FPGA编程
    的头像 发表于 01-19 09:05 717次阅读
    FPGA <b class='flag-5'>入门</b>必看:Verilog 与 VHDL <b class='flag-5'>编程</b>基础解析!

    Renesas QuickConnect Beginners Kit 快速上手:从入门到实践

    Renesas QuickConnect Beginners Kit 快速上手:从入门到实践 在当今快速发展的电子科技领域,快速原型开发和高效的系统设计是工程师们追求的目标。Renes
    的头像 发表于 12-29 09:25 482次阅读

    PROFET™ +2 12V 演示板快速入门指南

    PROFET™ +2 12V 演示板快速入门指南 在电子设计领域,PROFET™ +2 12V 高端开关是一款备受关注的产品。今天,我们就来详细探讨一下 PROFET™ +2 12V 演示板的快速
    的头像 发表于 12-21 15:20 1045次阅读

    如何调试和编程CW32F030C8T7?支持哪些调试工具和编程语言

    了解如何调试和编程CW32F030C8T7是开发过程中的重要环节。它支持哪些调试工具(如JTAG、串口调试等)和编程语言(如C、C++等)?如何设置和使用这些工具来加速开发过程?
    发表于 12-05 06:48

    为什么单片机还在用C语言编程

    说起单片机我们就会想到C语言,单片机为什么还在用C语言编程?现在有很多很好用的高级语言,如VC、PYTHON、PHP等等,为什么这些语言不能
    发表于 11-28 07:37

    C语言编程技巧

    设计,分层开发代码,便于理解和维护。 ‌8、避免使用GOTO语句‌:尽管GOTO语句在某些情况下仍然有用,但现代编程更倾向于使用函数和循环控制结构,以提高代码的可读性和维护性。 ‌9、利用C语言的灵活性
    发表于 11-27 06:46

    2025年最佳的嵌入式编程语言有哪些呢?

    嵌入式系统是现代科技不可或缺的一部分。它们存在于家用电器、汽车、住宅、医院、商店等各个领域。它们与我们的社会紧密相连。选择合适的语言来构建嵌入式系统对于成功至关重要。那么,2025年最佳的嵌入式编程
    的头像 发表于 11-14 10:27 1781次阅读
    2025年最佳的嵌入式<b class='flag-5'>编程</b><b class='flag-5'>语言</b>有哪些呢?

    一文了解Mojo编程语言

    Mojo 是一种由 Modular AI 公司开发的编程语言,旨在将 Python 的易用性与 C 语言的高性能相结合,特别适合人工智能(AI)、高性能计算(HPC)和系统级编程场景。
    发表于 11-07 05:59

    C语言入门(硬件嵌入式那种不是APP开发的)

    C语言入门(硬件嵌入式那种不是APP开发的),有没有对初学者很友好的书籍、视频等资料推荐一下,一直以来看了正dian原子、野火等的视频、文档结果从快要入门到放气,然后再从放气到快要入门
    发表于 09-27 12:03

    MiniVC6(C语言快速部署)资料

    MiniVC6(C语言快速部署)软件,无需安装。
    发表于 09-04 16:59 0次下载

    梯形图语言补充编程说明书

    电子发烧友网站提供《梯形图语言补充编程说明书.pdf》资料免费下载
    发表于 07-09 14:14 3次下载

    C语言精彩编程百例-364页

    内容提要 C是一种通用的程序设计语言,它包含了紧凑的表达式、丰富的运算符集合、现代控制流以及数据结构等四个部分。C语言功能丰富,衣达能力强,使用起来灵活方便:它应用面广,可移植性强,网时具有高级语言
    发表于 06-13 17:28

    跟老齐学Python:从入门到精通

    本帖最后由 yuu_cool 于 2025-6-3 16:52 编辑 本资料是面向编程零基础读者的Python 入门教程,内容涵盖了Python 的基础知识和初步应用。以比较轻快的风格,向零基
    发表于 06-03 16:10

    免费分享Arduino入门+进阶(全套例程+书籍)

    Arduino是一款开源电子原型平台,由硬件(单片机开发板)和软件(编程环境)组成,旨在让非专业用户也能轻松入门电子制作和编程。它的核心思想是简化硬件开发,通过直观的编程和模块化设计,
    的头像 发表于 05-22 11:40 1328次阅读
    免费分享Arduino<b class='flag-5'>入门</b>+进阶(全套例程+书籍)

    单片机c语言编程实例大全

    单片机c语言编程实例大全_18
    发表于 04-30 16:11 7次下载