Replay log回放模块作为我们常见的问题分析小工具,是大部分车载圈老人的必备工具,不过自从CANoe软件11.0之后的版本变动依然无法阻挡每一个车载人使用的热情,除了我们常见的手动回放log外,我们工作中还有一部分低概率以及极低概率出现的问题,这时候我们就需要通过自动化对这个模块进行预处理,然后让它自动的帮我们复现问题,今天介绍的主要就是replay模块调用的相关函数。
![](https://i-blog.csdnimg.cn/blog_migrate/76d782a8aee58bd6f141abcde185d451.png)
ReplayResume
![](https://i-blog.csdnimg.cn/blog_migrate/f2b717ed369f4519f150dd21745ebfb5.png)
功能:挂起名称为pName的Replay块后启动它
pName:回放模块名称
返回值:
1:执行成功则返回1
0:pName回放模块不存在或者无法启动
ReplayStart
![](https://i-blog.csdnimg.cn/blog_migrate/432fadb134426fa993e40c8e2b426737.png)
功能:启动回放模块
pName:回放模块名称
返回值:
1:执行成功则返回1
0:pName回放模块不存在或者无法启动
ReplayStop
![](https://i-blog.csdnimg.cn/blog_migrate/9ecd5d463842e804a2d180f29087f0a6.png)
功能:停止回放模块为pName的 回放
pName:回放模块名称
返回值:
1:执行成功则返回1
0:pName回放模块不存在或者无法启动
ReplayState
![](https://i-blog.csdnimg.cn/blog_migrate/7dd71b3d1932f3c5ffc6c370a07eb2a3.png)
功能:返回回放模块的回放状态
pName:回放模块名称
返回值:
0:重播块已停止(状态:已停止)
1:已开始执行Replay文件(状态:正在运行)
2:Replay文件的执行已停止(状态:挂起)
-1:回放块不存在时
代码示例:
variables
{
char replayName[32] = "ibus_data";
}
on key 'b'
{
replayStart( replayName);
}
on key 'e'
{
replayStop( replayName);
}
on key 's'
{
replaySuspend( replayName);
}
on key 'r'
{
replayResume( replayName);
}
on key 'w'
{
writeReplayState( replayName);
}
void writeReplayState( char name[])
{
switch ( replayState( name))
{
case 0:
write( "Replay Block %s is stopped", replayName);
break;
case 1:
write( "Replay Block %s is running", replayName);
break;
case 2:
write( "Replay Block %s is suspended", replayName);
break;
default:
write( "Error: Replay Block %s has an unknown state!", replayName);
break;
};
}
ReplaySuspend
![](https://i-blog.csdnimg.cn/blog_migrate/89c3cd0216b743e1481b73f5191f8c30.png)
功能:挂起回放模块为pName的回放
pName:回放模块名称
返回值:
1:执行成功则返回1
0:pName回放模块不存在或者无法启动
SetReplayFileName
![](https://i-blog.csdnimg.cn/blog_migrate/1536afe26f863883075376eb0bca654d.png)
功能:替换现有Replay块的源文件。函数调用会暂时停止重播,并使用新的源文件重新启动重播块。
如果在文件更改之前重播处于活动状态,则函数调用会暂时停止重播并使用新的源文件重新启动重播块。
函数调用不会修改模拟设置中回复块的配置。保存配置时不会存储新文件。
如果在测量期间在“回复”块的配置对话框中更改源文件,则新文件名将存储在配置中。
注意:如果函数在启动时处理程序中执行,则不会启动重放。要与函数一起启动重放,必须在启动时处理程序之外执行该函数。或者,可以使用ReplayStart开始回放。
nameOfReplayBlock:回放对话框中回放名称字段的内容
fileName:新的源文件(作为配置文件的绝对或相对路径)
fileType:源文件类型(字符串):ASC、BLF;对于CANoe Replay块的选择对话框中可用的所有其他源文件类型,请使用BLF作为fileType参数。
示例代码:
//常见的使用方式
SetReplayFilename("Replay", "replay_test_capl1.asc", "asc");
SetReplayFilename("Replay", "replay_test_capl1.blf", "blf");
//对于CANoe Replay块的选择对话框中可用的所有其他源文件类型,请使用BLF作为fileType参数。
SetReplayFilename("Replay", "replay_test_capl1.mf4", "blf");
SetReplayFileNameAndTimeInterval
![](https://i-blog.csdnimg.cn/blog_migrate/553813059c78ef0929eaf568c134da9d.png)
功能:将回放模块切换到不同的输入文件,并设置重播的时间间隔。
替换现有Replay块的源文件,并允许设置录制事件的开始和停止时间。
如果在文件更改之前重播处于活动状态,则函数调用会暂时停止重播并使用新的源文件重新启动重播块。
函数调用不会修改模拟设置中应答块的配置。保存配置时不会存储新文件。
如果在测量期间在回复块的配置对话框中更改源文件,则新文件名将存储在配置中。
注意:行为取决于Replay块的设置。如果回放应通过CAPL启动,则必须使用ReplayStart函数功能。如果在活动重放期间使用该功能,则文件的加载时间会导致延迟。
nameOfReplayBlock:回放对话框中回放名称字段的内容
fileName:新的源文件(作为配置文件的绝对或相对路径)
fileType:源文件类型(字符串):ASC、BLF;对于CANoe Replay块的选择对话框中可用的所有其他源文件类型,请使用BLF作为fileType参数。
startTime:日志文件中记录的事件的开始时间(以纳秒为单位)。使用ConvertTimestampToNS转换以天、小时、分钟或秒为单位的时间戳。
endTime:日志文件中记录的事件的结束时间(以纳秒为单位)。使用ConvertTimestampToNS转换以天、小时、分钟或秒为单位的时间戳。
示例代码:
variables
{
char fileNameBlf[50] = "C:\\anyFolder\\LogFile.blf";
char fileNameMf4[50] = "C:\\anyFolder\\LogFile.mf4";
char fileNameAsc[50] = "C:\\anyFolder\\LogFile.asc";
}
on preStart
{
setReplayFileNameAndTimeInterval("ReplayBlockBlf", fileNameBlf, "blf", 5000000000, 10000000000);
setReplayFileNameAndTimeInterval("ReplayBlockMf4", fileNameMf4, "blf", 2000000000, 50000000000);
setReplayFileNameAndTimeInterval("ReplayBlockAsc", fileNameAsc, "asc", 1000000000, 7000000000);
}
on key 'a'
{
replayStart("ReplayBlockBlf");
}
on key 'b'
{
replayStart("ReplayBlockMf4");
}
on key 'c'
{
replayStart("ReplayBlockAsc");
}
StartReplayFile
![](https://i-blog.csdnimg.cn/blog_migrate/8ae5900fa354439bf3dde52d49bb68b8.png)
功能:开始启动回放文件
注意:可以使用配置目录的相对路径或绝对路径来指定重播文件,也可以只指定重播文件的文件名。对于此选项,重播文件必须位于与配置相同的文件夹中。所有事件都在重播文件中记录的同一频道上重播。将丢弃以未配置通道为目标的事件;重放文件中的第一个事件将立即重放,而不考虑其时间戳;重播的开始与调用该函数是及时分离的,因此重播实际上将在该函数返回后开始一个短但不确定的时间跨度。
回放文件类型:
CAN信息
CAN错误帧
CAN过载帧(未发送,仅在测量设置中可见)
诊断请求
GPS事件
信号值
系统变量更新
环境变量更新
特别是,无法使用此功能回放LIN、FlexRay事件。
fileName:回放文件
返回值:作为函数StoptReplayFile的句柄使用
StopReplayFile
![](https://i-blog.csdnimg.cn/blog_migrate/6c8b619c559e6ff13fc1d1f1b40d8cb8.png)
功能:停止StartReplayFile启动的回放文件
handle:函数StartReplayFile返回的句柄