从零开始学习CANoe(一)—— 新建工程
从零开始学习CANoe(二)—— CANdb++ 创建 dbc文件
从零开始学习CANoe(三)—— 系统变量的创建和使用
从零开始学习CANoe(四)—— 设计panel
从零开始学习CANoe(五)—— CAPL 测试节点
从零开始学习CANoe(六)—— XML 测试节点
从零开始学习CANoe(七)—— .NET 测试节点
从零开始学习CANoe(八)—— IG 模块
从零开始学习CANoe(九)—— 断点调试(Debug)
从零开始学习CANoe(十)—— 信号发生器(Signal Generator)
从零开始学习CANoe(十一)—— Statistics Window
从零开始学习CANoe(十二)—— Trace Window
系列用的CANoe演示工程我放在了Git上,不定时根据博客更新。
CANoe-Demn
CANoe 的 Logging
3.或者通过下图的方式创建logging block ,名字默认是logging2
2.文件的后缀可以是下图所示 常用后缀 .asc ;.blf
1.下图中,左边圆的图标是暂停,|| 是开始,当把工程run起来的时候,通过鼠标点击实现录制和停止
。
2. 也可以通过绑定按键触发,比如下图通过按键‘t’,可以开启录制。
用户自己定义,可以选择的方式有很多,通过信号,报文,变量都可以触发;
下面我通过变量值得改变触发logging,当选择的系统变量等于5开始录制,等于6停止录制
创将一个simulation node .can文件,定义一个定时器,当工程开始5000ms之后设置变量为5,也就是开始录制,时间到后再设置变量为6,停止录制。
/*@!Encoding:1252*/
variables
{
msTimer start_logging;
}
on start
{
@sysvar::vin::EDR_type = 0;
setTimer(start_logging, 5000);
}
on timer start_logging
{
if(@sysvar::vin::EDR_type == 0)
{
// start trgier
@sysvar::vin::EDR_type = 5;
setTimer(start_logging, 5000);
}
else if(@sysvar::vin::EDR_type == 5)
{
// stop trgier
@sysvar::vin::EDR_type = 6;
}
}
下图 trace中 5s的时间点,开始录制
下图 trace中 10s的时间点,停止录制
4.8s开始录制,10.2s停止录制,是因为设置了下图的 Pre-triger time 和 Post-triger time 等于200ms,也就是前后多录制200ms时间的数据
在CAPL脚本中通过API控制logging的开始与停止,下面是一些常用的API.
设置logging文件的存放路径,不设置,会默认存放在logging block 设置的路径.
开始录制trace,可以指定logging block 和 preTriggerTime 时间
停止录制可以指定logging block 和 postTriggerTime 时间
logging block 中设置如下
定义一个定时器,工程开始5s后开始录制,10后停止录制
/*@!Encoding:1252*/
variables
{
int i =0;
msTimer start_logging;
}
on start
{
//设置 logging文件的路径和文件名
setLogFileName("logging", "C:\\Temp\\log1\\{UserName}_{LocalTime}.blf");
setTimer(start_logging, 5000);
}
on timer start_logging
{
if(i==0)
{
startLogging("logging", 1000);
setTimer(start_logging, 5000);
}
else
{
stopLogging("logging", 1000);
}
i++;
}
解锁如下图所示,5s开始录制,10s结束录制
发送一个trigger信号到指定的logging block,第一次执行这个API是开始录制,第二次执行时暂停,第三次是录制是开始。。。
variables
{
int i =0;
msTimer start_logging;
}
on start
{
setLogFileName("logging", "C:\\Temp\\log1\\{UserName}_{LocalTime}.blf");
setTimer(start_logging, 5000);
}
on timer start_logging
{
if(i==0)
{
// startLogging("logging", 1000);
triggerEx("logging");
setTimer(start_logging, 5000);
}
else
{
triggerEx("logging");
// stopLogging("logging", 1000);
}
i++;
}
回放logging文件的结果和上面相同。
此博客结束,感谢敢看,下篇更精彩。。。
- 要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
- 如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。当然执意选择白嫖也欢迎。