CAPL学习笔记

CAPL是CANOE自带的一种编程语言,要和CANOE中的一个节点绑定在一起。它的文件后缀是.can。

两种添加方式:1. 在simulation setup中增加一个网络节点,配置与其关联的CAPL文件,点击小铅笔符号;2. 在measurement setup中的hot spot, 右击,添加编程节点,在之前的hot spot的介绍中提到过啦。CAPL文件是在CAPL browser中编写编译的。

在CAPI中,关键字关键字具有特殊的含义和用途,因此, 不得将关键字用作变量或函数的名称

byte:声明一个字节的变量
word:声明二个字节的变量
dword:声明四字节的变量
int:声明二个字节的整数
char:声明一个字符串
long:声明四字节的变量
qword:声明八字节的变量
float:声明一个八字节的浮点数
double:声明一个八字节的浮点数
struct:结构体

struct Data {
int type;
long buf;
char name[50];
};

enum:枚举

enum state
{
State_Off = -1,
State_On = 1
};

message

1、用dbc里的消息名声明消息
message Ignition_on msg_wakeup;
2、用消息id声明消息
message 0x5f0 msg_wakeup;

dbMsg * :声明一个dbc类型的消息

1、如果你想传入一个dbc里的message名作为形参,可以使用这种方式,调用时直接把dbc里的消息传进去即可
void function1(dbMsg * dbcmsg)

2、可以先声明一个dbc消息,然后用=把dbc里的消息EngineData赋值给它
dbMsg * dbcmsg;
dbcmsg = EngineData;

3、还可以用函数lookupMessage函数赋值dbc消息,传入的字符串是dbc里消息名
dbMsg * dbcmsg;
dbcmsg = lookupMessage("EngineData")

还有dbNode等关键字,用来声明dbc里的其他参数

signal * :声明一个dbc类型的信号

signal * dbcsignal;
dbcsignal = lookupSignal("EngineSignal");
timer t_sendmsg;    :声明一个定时器,时间单位为秒
msTimer t_sendmsg;  :声明毫秒级定时器

如果想直接给信号赋值,必须要在信号的前面加一个$符号

$EngineSpeed = 500.0;

CAPL语法 基于C语言,允许使用以下指令、表达式和运算符

完整的一段函数体需要用中括号括起来

void func1()
{
  if ()
  {
    ...

  }
}

判断语句if…else…,一般用来判断是或非 两种情况,当然也可以通过else if添加更多情况

void func1(int a)
{
  if (a == 1)
  {
    ...

  }
}

void func1(int a)
{
  if (a == 1)
  {
    ...

  }
  else
  {
    ...

  }
}

void func1(int a)
{
  if (a == 1)
  {
    ...

  }
  else if (a == 2)
  {
    ...

  }
  else
  {
    ...

  }
}

if…else…是从上到下依次判断,如果满足了其他的某一个条件,则下面的其他情况就不会去判断和执行了

switch, case, default

switch…case…default…也是用于判断情况,它其实比if…else…更适合于多种情况的判断

void func1(int a)
{
  switch(a)
  {
    case(1):
      ...

      break;
    case(2):
      ...

      break;
    case(3):
      ...

      break;
    default:
      ...

      break;
  }
}

switch()里面要放入的是要判断的变量,case()里放入的是变量等于的值,满足的话就执行case里的函数体,如果所有case都不满足,则最终执行default里的函数体,每一个case和default的最后都要有break,来让程序跳出switch…case…

这三个是循环语句,满足里面的条件就会一直执行,所以必须要有不满足的时候,否则就会形成死循环,程序永远无法结束了

Original: https://www.cnblogs.com/Ye-Wei/p/16125854.html
Author: 西故黄鹤楼
Title: CAPL学习笔记

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606474/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 文本编辑命令

    一、vim编辑器 1、vim的三种模式 一般模式(正常模式):以vim打开文件就直接进入到此模式,此模式中可以使用上下左右按键进行移动光标,也可以在此模式下进行文件的复制粘贴删除等…

    Linux 2023年6月6日
    0106
  • Jquery如何使用animation动画效果改变背景色

    一、问题引入 1. jquery的animate动画虽然强大,但是无法使用其进行背景色(background-color)的动画效果变化,因为animate动画效果只能动态改变数值…

    Linux 2023年6月14日
    0207
  • 用户身份标识与账号体系实践

    互联网的账号自带备忘机制; 一、业务背景 通常在系统研发的过程中,需要不断适配各种业务场景,扩展服务的领域和能力,一般会将构建的产品矩阵划分出多条业务线,以便更好的管理; 由于各个…

    Linux 2023年6月14日
    087
  • 如何使用IDEA进行DOCKER调试

    引言在日常的开发过程中我们使用的开发环境通常与正式环境并不一致,这样就比较容易出现一些意外。于是我们通常会借助docker来让我们的开发和正式环境一致。那如何在docker中进行运…

    Linux 2023年6月14日
    0109
  • linux常用指令记录

    给目标文件夹执行权限:chmod -R 777 html du -sh . [对当前目录下所有的目录和文件的大小进行汇总,-s表示汇总,-h表示以KB, MB, GB, TB格式进…

    Linux 2023年6月6日
    0116
  • vi和vim文本编辑器

    vi和vim文本编辑器 vi和vim模式的相互切换 快捷键使用案例 拷贝当前行yy; 拷贝当前行向下的5行 5yy; 并粘贴(p) 删除当前行dd; 删除当前行向下的5行 5dd …

    Linux 2023年6月11日
    093
  • 云笔记本:一个Laxcus应用软件

    给大家展示一个第三方开发的应用软件:云笔记本。 这个作品来自一位Laxcus分布式应用软件开发者,目前已经通过Laxcus集群操作系统的兼容性测试。云笔记本的界面和功能,类似Win…

    Linux 2023年6月6日
    0126
  • [完美解决] pip: Fatal error in launcher: Unable to create process using xxx

    环境 windows 10, python 3.9.2 发生原因 更改了python的安装路径,并且修改了环境变量。于是运行命令行pip发送了RT的错误 可能原因 pip程序内写死…

    Linux 2023年6月7日
    0102
  • SpringCloud gateway自定义请求的 httpClient

    本文为博主原创,转载请注明出处: 引用 的 spring cloud gateway 的版本为 2.2.5 ; SpringCloud gateway 在实现服务路由并请求的具体过…

    Linux 2023年6月14日
    094
  • 玩转redis-简单消息队列

    使用 go语言基于 redis写了一个简单的消息队列源码地址使用demo redis的 list 非常的灵活,可以从左边或者右边添加元素,当然也以从任意一头读取数据 添加数据和获取…

    Linux 2023年5月28日
    098
  • redis用法介绍

    Jedis常用方法API Redis命令用scan代替keys、smembers等命令 Java Spring 与 Redis 操作封装源码 Redis API 必杀解读:引入Re…

    Linux 2023年5月28日
    088
  • JAVAssist字节码操作

    Java 动态性的两种常见实现方式 字节码操作 反射 运行时操作字节码可以让我们实现如下功能: 动态生成新的类 动态改变某个类的结构(添加/删除/修改新的属性/方法) 优势: 比反…

    Linux 2023年6月13日
    090
  • 解决某些情况下 ECharts 饼图多行标签重叠问题

    解决某些情况下 ECharts 饼图多行标签重叠问题 对于多行标签的重叠问题,其实一直没有一个完美的解决方案。 我能在网上查到的比较全面的解决方法就是这个:https://zhua…

    Linux 2023年6月7日
    089
  • 【.Net vs Java? 】 看一看二者的类有多像?

    1. 包(Package)、命名空间(NameSpace) 在Java中常用的是包(Package),较少提到NameSpace的概念。Java官方文档中这样说: 为了使类型更易于…

    Linux 2023年6月7日
    085
  • 白话TCP/IP原理

    TCP/IP(Transmission-Control-Protocol/Internet-Protocol),中文译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Inte…

    Linux 2023年5月27日
    097
  • 从 Hadoop 到云原生, 大数据平台如何做存算分离

    Hadoop 的诞生改变了企业对数据的存储、处理和分析的过程,加速了大数据的发展,受到广泛的应用,给整个行业带来了变革意义的改变;随着云计算时代的到来, 存算分离的架构受到青睐,企…

    Linux 2023年6月14日
    055
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球