前面文章中我们已经介绍了常用的几种板卡的基本信息,那这些板卡该如何去通过软件调用呢?带着这个问题我们开始新的一块内容 - VT系统相关的自动化控制函数介绍,我会按照不同的板卡来分类,对其可控制的函数进行介绍,方便大家的阅读和使用;今天闲来介绍一些通用的调用和触发相关的函数。
vtsSetTransferCycle
功能:设置从VT系统检索系统变量测量值并将其写入相应系统变量的周期时间。
Target:对VT系统有过了解的朋友肯定知道,每块板卡的每个通道都会在CANoe工程中映射出一个系统变量,该变量名称就是char Target[]变量,我们这里调用的就是这个信息。
CycleTime:此处的周期时间单位为秒,我们可以设置的最小周期为1ms,常见的可使用的时间周期为1 ms (= 0.001s), 2 ms, 5 ms, 10 ms, 20 ms, 50 ms, 100 ms, 200 ms, 500 ms, 1 s, 2 s, 5 s and 10 s;但是具体使用什么周期我们需要根据不同的板卡参数去调用,如果使用的不可用的周期时间,这个调用就是一次失败的调用,并且返回值为-1。
示例:
testfunction WaitForECUSignalChange ()
{
// 在测量期间,我们把周期设置为1ms,这样我们的信息能够被快速的检测到
vtsSetTransferCycle("VTS::ECU_Dout_1::CurBit", 0.001);
// 循环等待事件的发生
while(1)
{
if(@sysvar::VTS::ECU_Dout_1::CurBit == 1) break;
TestWaitForTimeOut(1);
}
// 当事件发生后,我们将周期调整为默认周期100ms
vtsSetTransferCycle("VTS::ECU_Dout_1::CurBit", 0.1);
}
使用方法2:
vtsSetTransferCycle("VTS::ECU_Dout_1::CurBit", 0.001);
//等同于
sysvar::VTS::ECU_Dout_1::CurBit.SetTransferCycle(0.001);
也就是说我们也可以把系统变量名称作为一个已知的参数,然后通过SetTransferCycle去调用,无论上面2种方法中的哪一种,都能够实现板卡的控制,我们根据自己的使用习惯使用即可。
vtsSetTriggerParams
功能:设置触发器的基本参数
注意:该函数只能在VT系统的特定通道的系统变量命名空间调用(需要使用特定的参数)
Target:指定配置的触发器名称:VTS::IgnitionChannel
Trigger:配置触发器的通道
SourceChannel:指定配置的触发器连接到哪个通道
EdgeType:配置触发类型:上升沿触发或者下降沿触发;高电平触发或者低电平触发。
返回值:0:调用成功;-1:调用错误;-2:调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
组合起来的命令就是:
vtsSetTriggerParams( "VTS::IgnitionChannels", eVTSTrigger1, eVTSTriggerSourceChannel1, 0);
//同类型用法
sysvar::VTS::IgnitionChannels.SetTriggerParams( "VTS::IgnitionChannels", eVTSTrigger1, eVTSTriggerSourceChannel1, 0);
vtsSetTriggerParamsEx
设置触发器的其他参数配合vtsSetTriggerParams函数一起使用
Target:指定配置的触发器名称:VTS::IgnitionChannel
Trigger:配置触发器的通道;参考vtsSetTriggerParams说明
MinPulseWidth:最小脉冲宽度
RestartTime:重新启动时间,指定触发器被另一个触发器重新启动的延迟;触发器2被配置为触发器1的重新启动触发器。在这种情况下,触发器1在触发器2触发后重新启动,延迟由该参数设置。
PreTriggers:此位字段指定已配置触发器的先决条件。每个设置位指定在激活配置的触发器之前必须激活的触发器。此设置涉及同一VT系统通道的触发。
位0已设置:触发器1必须作为先决条件激发
位1设置:触发2必须作为先决条件触发
VT1004模块:可使用8个最低位。示例:将PreTriggers设置为5(=1+4)以使用触发器1和3作为配置触发器的前提条件。
RestartTriggers:此位字段指定重新启动已配置触发器的触发器。重新启动后,触发器的触发器事件系统变量可以显示另一个事件。但是,触发器的事件计数器不会重置。此设置涉及同一VT系统通道的触发。
位0设置:Trigger1重新启动配置的触发器
位1设置:Trigger2重新启动配置的触发器
位2设置:Trigger3重新启动配置的触发器
VT1004模块:可使用8个最低位。示例:将RestartTriggers设置为10(=2+8)以将触发器2和4设置为已配置触发器的重启触发器。
ThresholdEventCount:如果此参数设置为大于0的值k,则触发事件仅可见,并且触发事件的事件计数器仅在触发事件发生k+1次时递增。
有效值:0-4294967295
示例:如果ThresholdEventCount设置为3,则在配置的事件第四次发生时设置触发事件系统变量。此外,配置的事件发生时,事件计数器每4次递增一次。
ExtSettings:此位字段指定其他设置
返回值:0:调用成功;-1:调用错误;-2:调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令
vtsSetTriggerParams( "VTS::IgnitionChannels", eVTSTrigger1, eVTSTriggerSourceChannel1, 0);
vtsSetTriggerParamsEx( "VTS::IgnitionChannels", eVTSTrigger2, 0.0, 0.0, 1, 0, 0, 0);
StartTrigger
功能:该函数启动指定的触发器。它还将与触发器关联的事件计数器系统变量重置为0。
Trigger:配置触发器的通道;参考vtsSetTriggerParams说明
返回值:0:调用成功;-1:调用错误;-2:调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令
vtsStartTrigger( "VTS::IgnitionChannels", eVTSTrigger1);
sysvar::VTS::IgnitionChannels.StartTrigger( eVTSTrigger1);