Canoe logging block
Canoe 录制trace功能
创建logging Block
- 点击工具栏的analyze -> Measurement Setup
- 在任意block上点击右键,然后选择 insert logging block,创建logging block ,名字默认是:blogging
3.或者通过下图的方式创建logging block ,名字默认是logging2
配置 logging file
- logging file的名字可以编程定义,如下图可以是系统时间也可以是电脑名
2.文件的后缀可以是下图所示 常用后缀 .asc ;.blf
配置logging trigger model
- 在logging block上单击右键 ,然后点击configuration。
方式一:Entire measurement
-
这种触发方式,无差别的把trace全部录制下来,下面的图很形象的表示从start 一直录制到stop
-
还以选择手动操作,稀土的左边圆的图标是暂停,|| 是开始,当把工程run起来的时候,是可以通过鼠标点击的
-
下图二,最后红色圈起来的,表示可以通过按键触发,开始和暂停之间来回切换。
-
通过空格键active logging block ,然后 开始你的工程。
- 停止工程,将switch开关打到 offline
- 双击下图红色框内,调出logging文件选择对话框,选择刚才配置的路径下的logging文件
- 点击工具栏的Analysis ,选中Trace ,分析trace
- 刚才我在工程运行了10ms左右,按下了按键‘t’,20ms左右再次按下‘t’,这样10ms到20ms之间的数据我就没有录到,如下图所示
方式二:user defined
用户自己定义,可以选择的方式有很多,通过信号,报文,变量都可以触发,下面我通过变量值得改变触发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
在CAPL脚本中通过API控制logging的开始与停止,下面是一些常用的API.
setLogFileName()
设置logging文件的存放路径,不设置,会默认存放在logging block 设置的路径.
startLogging()
开始录制trace,可以指定logging block 和 preTriggerTime 时间
stopLogging()
停止录制可以指定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结束录制
triggerEx()
发送一个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文件的结果和上面相同。
下一篇: 合肥小吃都有哪些
推荐阅读
-
.Net Core中的日志组件(Logging)
-
DIV CSS display (block none inline)属性的用法_html/css_WEB-ITnose
-
[转]去除inline-block元素间间距的N种方法
-
Python问题1:IndentationError:expected an indented block
-
IE6兼容inline-block的方法_html/css_WEB-ITnose
-
div在什么情况下要加display:block?_html/css_WEB-ITnose
-
iOS通过逆向理解Block的内存模型
-
iOS在Block中修改外部变量值的实现代码
-
iOS利用Block逆向传值的方式详解
-
IOS 使用Block二次封装AFNetworking 3.0详解