CANoe中用CAPL脚本按特定格式发送报文

  • 需求
    • 实验设备
    • 实验环境

最近学习用CANoe软件测试CAN总线,纯新手,把最近的学习心得分享一下,欢迎大佬指正。

需求

1)仿真开始报文默认以100ms的周期不间断发送
1)报文周期和发送次数可控
2)报文发送可随时暂停,暂停时间可控

实验设备

好吧!首先你得有个实验环境,我用的CANoe软件版本是:CANoe 12.0 SP5,Vector的CAN盒子量力而行~~

实验环境

1)DBC定义。我这里随便写了一个报文,里面包含三条信号

2)仿真环境
说明一下,这里的环境仅仅是把仿真跑起来,大家不要纠结为什么那么多结点。

3)CAPL脚本
带Button版本(各人比较倾向):

/*@!Encoding:1252*/
variables
{int CycleTime = 100;        //发送周期初始值int NumTime = 100;         //发送次数int NumTime1 = 1;           //发送次数计数器int PauTime = 0;              //暂停时间,初始值0int CounterNum = 1;         //暂停时间计数器,初始值1int Mode = 0;                   //模式msTimer time_ms;message VCU_HMI_01 msg;
}on start
{setTimer(time_ms, 100);}on timer time_ms
{if(CounterNum >  PauTime){VCU_Control(CycleTime, NumTime);}else{CounterNum++;setTimer(time_ms, 1);}
}on sysvar VCU::Button_1   //控制报文发送格式
{if(@this == 1){CycleTime = @VCU::TimeSel;NumTime = @VCU::NumSel;//write("The Current condition is ... %d", @this);write("The Current NumSel is ... %d", @VCU::NumSel);write("The Current TimeSel is ... %d", @VCU::TimeSel);Mode = 1;}
}on sysvar VCU::Button_2    //控制发送暂停时间
{if(@this == 1){PauTime = @VCU::PauseTime;write("The Current PauseTime is ... %d", @VCU::PauseTime);CounterNum = 1;}
}on sysvar VCU::Button_3    //初始化
{if(@this == 1){Mode = 0;CounterNum = 1;NumTime1 =1;@VCU::NumSel = 0;@VCU::TimeSel =100;@VCU::PauseTime = 0;write("The Current Condition is ... initialization");}
}
void VCU_Control(int CycleTimeTep, int NumTimeTep)
{if(Mode == 1){if(NumTimeTep == 0){output(msg);setTimer(time_ms, CycleTimeTep);}if(NumTimeTep != 0){if(NumTime1<=NumTimeTep){output(msg);write("The Send Num is ... %d", NumTime1);NumTime1++;setTimer(time_ms, CycleTimeTep);}if(NumTime1>NumTimeTep){Mode = 0;NumTime1 = 1;}}}if(Mode == 0){output(msg);setTimer(time_ms, 100);}
}

效果:


CANoe中用CAPL脚本按特定格式发送报文相关推荐

  1. CANoe:CAPL周期发送CANFD报文

    文章目录 一.关键设置参数 二.操作方式 1.插入CAPL脚本 2.编辑CAPL脚本 一.关键设置参数 只要在定义message下面两个参数的值并设置为1时,即可发送CANFD报文 FDF: If n ...

  2. 【CANoe之CAPL基础学习_如何正常在总线上中发送CAN消息】

    前言 本文适合于新手使用CANoe进行基础CAPL编程.基于CANoe的VN1640在CAN网络上进行发送CAN报文,实现CAN总线报文的控制.本文主要通过使用CANoe模拟发送一条周期型报文.文章内 ...

  3. CANoe之CAPL编程(CANoe系列其三)

    CANoe之CAPL编程(CANoe系列其三) 1.CAPL概述 1.1.CAPL语言特性 1.2.CAPL的程序结构 1.3.CAPL的数据类型 1.4.CAPL事件类型概述 2.CAPL事件类型 ...

  4. CANoe 之 CAPL编程

    文章目录 CANoe 之 CAPL编程 CAPL 编程语言介绍及操作步骤 CAPL介绍 操作步骤 CAPL语法 CAPL程序的结构 数据结构 事件类型概述 常见函数 CANoe 之 CAPL编程 CA ...

  5. CANOE入门:CAPL语言(1)

    CANoe项目中添加一个CAPL节点 添加CAPl节点有以下两种方法. 操作方法一 Simulation ->Measurement Setup ->选中要添加节点的地方右键->In ...

  6. CAPL脚本中对Flexray事件的响应

    FlexRay on frFrame * on frFrame * 拓展形式: on frFrame name on frFrame (slot ID, base cycle,cycle repeti ...

  7. 使用Filebeat采集日志结合logstash过滤出特定格式的日志至Elasticsearch

    使用Filebeat采集日志结合logstash过滤出特定格式的日志 文章目录 使用Filebeat采集日志结合logstash过滤出特定格式的日志 ELK搭建 什么是Filebeat 什么是Logs ...

  8. capl保存trace_用于诊断服务的CAPL脚本

    我正在编写CAPL脚本以自动化诊断服务 . 我已经阅读了一些大于8字节的DID . 直到8个字节,我可以正确捕获我的CAPL脚本中的数据,但是当数据大小超过8个字节时,我得到剩余字节的一些垃圾值00 ...

  9. 基于RDKit的Python脚本:SDF格式转SMILES格式

    RDKit: Open-Source Cheminformatics Software http://www.rdkit.org/ 简化分子线性输入规范(SMILES)是一种用ASCII字符串明确描述 ...

最新文章

  1. 怎么请假显智商高?评论区亮了! | 每日趣闻
  2. navicat for mysql 导入psc文件
  3. Java中实现的各种排序算法
  4. JVM学习笔记-04-java历史-沙箱安全机制
  5. [转]Oracle修改监听口令
  6. sqlserver 参数化查询 允许为null_关于SQL Server的insert执行的秘密(上)一个最简单的insert分析...
  7. Hive过滤脏数据的一些经验
  8. ResultSet用法集锦
  9. 用Python爬取GDP数据
  10. 大数运算之C 语言大数演算法
  11. 机器学习实战-54: 集成学习分类算法(ada-boost)
  12. 如何画出优秀的软件架构图?
  13. N子棋的实现方法,包括三子棋,五子棋
  14. 58——FFA-Net: Feature Fusion Attention Network for Single Image Dehazing
  15. 安装完linux后要做的几件事。
  16. 如何在word中输入打对勾的小方框-☑
  17. 2019游戏培训要花多少钱?
  18. Java常用到的6个加密技术,先收藏,总会用得到
  19. Solana沦为宕机链 以太坊杀手SOL套人无数 真的没有未来了吗?想多了
  20. 微信打不开怎么回事?分享解决办法

热门文章

  1. android方便简单的零侵入可扩展的换肤框架
  2. 服务器燃气热水器原理,燃气热水器选择攻略来了 简直太实用了!
  3. java 替换list中值的方法分享
  4. RGD-全氟化碳纳米乳MRI显影剂/USPIOswithFunctionalizedSurfaces造影剂齐岳
  5. 绑定文本框事件,浏览框。按钮单击事件
  6. 批处理-嵌套循环、if-else、延迟变量、函数
  7. Word原来还能制作请柬,这些Word的骚操作你都知道多少呢?
  8. Ophone和Iphone的价格PK
  9. gzip gunzip压缩解压保留原文件的方法
  10. 四,layaair对接微信小程序:分享