CANoe中用CAPL脚本按特定格式发送报文
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脚本按特定格式发送报文相关推荐
- CANoe:CAPL周期发送CANFD报文
文章目录 一.关键设置参数 二.操作方式 1.插入CAPL脚本 2.编辑CAPL脚本 一.关键设置参数 只要在定义message下面两个参数的值并设置为1时,即可发送CANFD报文 FDF: If n ...
- 【CANoe之CAPL基础学习_如何正常在总线上中发送CAN消息】
前言 本文适合于新手使用CANoe进行基础CAPL编程.基于CANoe的VN1640在CAN网络上进行发送CAN报文,实现CAN总线报文的控制.本文主要通过使用CANoe模拟发送一条周期型报文.文章内 ...
- CANoe之CAPL编程(CANoe系列其三)
CANoe之CAPL编程(CANoe系列其三) 1.CAPL概述 1.1.CAPL语言特性 1.2.CAPL的程序结构 1.3.CAPL的数据类型 1.4.CAPL事件类型概述 2.CAPL事件类型 ...
- CANoe 之 CAPL编程
文章目录 CANoe 之 CAPL编程 CAPL 编程语言介绍及操作步骤 CAPL介绍 操作步骤 CAPL语法 CAPL程序的结构 数据结构 事件类型概述 常见函数 CANoe 之 CAPL编程 CA ...
- CANOE入门:CAPL语言(1)
CANoe项目中添加一个CAPL节点 添加CAPl节点有以下两种方法. 操作方法一 Simulation ->Measurement Setup ->选中要添加节点的地方右键->In ...
- CAPL脚本中对Flexray事件的响应
FlexRay on frFrame * on frFrame * 拓展形式: on frFrame name on frFrame (slot ID, base cycle,cycle repeti ...
- 使用Filebeat采集日志结合logstash过滤出特定格式的日志至Elasticsearch
使用Filebeat采集日志结合logstash过滤出特定格式的日志 文章目录 使用Filebeat采集日志结合logstash过滤出特定格式的日志 ELK搭建 什么是Filebeat 什么是Logs ...
- capl保存trace_用于诊断服务的CAPL脚本
我正在编写CAPL脚本以自动化诊断服务 . 我已经阅读了一些大于8字节的DID . 直到8个字节,我可以正确捕获我的CAPL脚本中的数据,但是当数据大小超过8个字节时,我得到剩余字节的一些垃圾值00 ...
- 基于RDKit的Python脚本:SDF格式转SMILES格式
RDKit: Open-Source Cheminformatics Software http://www.rdkit.org/ 简化分子线性输入规范(SMILES)是一种用ASCII字符串明确描述 ...
最新文章
- 怎么请假显智商高?评论区亮了! | 每日趣闻
- navicat for mysql 导入psc文件
- Java中实现的各种排序算法
- JVM学习笔记-04-java历史-沙箱安全机制
- [转]Oracle修改监听口令
- sqlserver 参数化查询 允许为null_关于SQL Server的insert执行的秘密(上)一个最简单的insert分析...
- Hive过滤脏数据的一些经验
- ResultSet用法集锦
- 用Python爬取GDP数据
- 大数运算之C 语言大数演算法
- 机器学习实战-54: 集成学习分类算法(ada-boost)
- 如何画出优秀的软件架构图?
- N子棋的实现方法,包括三子棋,五子棋
- 58——FFA-Net: Feature Fusion Attention Network for Single Image Dehazing
- 安装完linux后要做的几件事。
- 如何在word中输入打对勾的小方框-☑
- 2019游戏培训要花多少钱?
- Java常用到的6个加密技术,先收藏,总会用得到
- Solana沦为宕机链 以太坊杀手SOL套人无数 真的没有未来了吗?想多了
- 微信打不开怎么回事?分享解决办法