![](https://img-blog.csdnimg.cn/img_convert/3499785774ee4d4ebd7894fad07381ce.png)
vtsStartStimulation - 启动激励输出
![](https://img-blog.csdnimg.cn/img_convert/905d5744c67b4bd28b31e89598cc31cf.png)
功能:使用预先设置的相应的输出模式,使用此信号开始输出激励信号。
Target:目标通道变量空间名称,例如:VTS::PRM_Sensor
返回值:
0:成功重置目标通道最大和最小值
-1:调用错误
-2: 调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3: 指定的模式无效
-4: 未在测试模块的主方法上下文中调用该函数。因此,不可能等到从VT系统接收设置。否则,呼叫成功,但不确定呼叫返回时是否已接管设置。
Demo演示
参考vtsStartStimulation示例
vtsStopStimulation - 停止激励输出
![](https://img-blog.csdnimg.cn/img_convert/6ff06cc6a7b349069442b2032c62820a.png)
功能:停止激励信号的输出。这将重置激励模式。因此,仅调用vtsStartStimulation来再次启动输出是不够的。您还必须恢复刺激模式,例如通过调用vtsSetStimulationMode。在命令执行结束时,在执行其他命令之前会有一个短暂的中断。这意味着下一个功能将在短暂延迟后执行。
使用此过程可确保有效执行停止命令。该命令只能在测试模块设置的上下文中调用,而不能在处理程序函数中调用。在处理程序函数中,无法确保正确执行停止命令
Target:目标通道变量空间名称,例如:VTS::PRM_Sensor
返回值:
0:成功重置目标通道最大和最小值
-1:调用错误
-2: 调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3: 指定的模式无效
-4: 未在测试模块的主方法上下文中调用该函数。因此,不可能等到从VT系统接收设置。否则,呼叫成功,但不确定呼叫返回时是否已接管设置。
Demo演示
下面示例展示了如何使用VT2004通道的PWM输出来模拟基于PWM的传感器(例如RPM传感器)。本例中使用的通道称为RPM_Sensor。
SimulateSensorPWM ()
{
// 频率设置 (100Hz)
float currentFrequency = 100.0;
// 选择电压刺激和PWM曲线类型
vtsSetStimulationMode("VTS::RPM_Sensor", eVTSStimulationModeVoltage);
vtsSetCurveType("VTS::RPM_Sensor", eVTSCurveTypePWM);
// PWM信号将在0V和5V之间切换
vtsSetPWMVoltageLow("VTS::RPM_Sensor", 0.0);
vtsSetPWMVoltageHigh("VTS::RPM_Sensor", 5.0);
// 将重复次数设置为无限
vtsSetPWMRepeats("VTS::RPM_Sensor", 0);
// 设置初始频率(100Hz)和占空比(50%)值
@sysvar::VTS::RPM_Sensor::PWMFreq = currentFrequency;
@sysvar::VTS::RPM_Sensor::PWMDC = 50.0;
// 开始仿真
vtsStartStimulation("VTS::RPM_Sensor");
// To stimulate different sensor readings increase
// frequency of the PWM signal over time
//使用不同的激励传感器
//PWM信号随时间的频率
while(currentFrequency < 200)
{
// 每100ms将频率增加1Hz
TestWaitForTimeOut(100);
currentFrequency += 1;
@sysvar::VTS::RPM_Sensor::PWMFreq = currentFrequency;
}
//停止仿真
vtsStopStimulation("VTS::RPM_Sensor");
}
//同功能不同实现方法
sysvar::VTS::RPM_Sensor.SetCurveType(eVTSCurveTypePWM);
![](https://img-blog.csdnimg.cn/img_convert/a8c159cde8304906915263504b32180c.png)
vtsSetWFParams - 配置控制电压曲线输出的参数
![](https://img-blog.csdnimg.cn/img_convert/078bc309e5df449989f272fa7a245227.png)
功能:该函数为电压或电阻曲线或位流的输出配置参数。
Target:目标通道变量空间名称,例如:VTS::Temp_Sensor
timeIncrement:指定在转换到下一个插值点之前,指定插值点的值将被激发多长时间。
根据模块和波形,时间增量的不同范围有效:
VT7001模块上的电压曲线:时间增量可以为0.000001(1µs)-- 0.065(65 ms)。请注意,对于0.000001(1µs)和0.00001(10µs)之间的值,输出精度高度依赖于环境条件。
传输至VT系统的分辨率为微秒。
VT2816或VT2004模块上的电压曲线:时间增量可以是-0.065(-65 ms)-- 0.065(65 ms)。如果该值为负值,则波形向后输出。请注意,输出精度在很大程度上取决于-0.0001(-10µs)和0.00001(10µs)之间的环境条件。
传输至VT系统的分辨率为纳秒。
电阻曲线:R>模式下为0.0005(500µs)-- 0.065(65 ms),R<模式下为0.001(1 ms)-- 0.06 5(65毫秒)。
传输至VT系统的分辨率为纳秒。
VT2516模块上的BitStreams:时间增量可以是0.000002(2µs)-- 0.065(65 ms)。
传输至VT系统的分辨率为微秒。
VT2848模块上的BitStreams:timeIncrement可以是-0.065(-65毫秒)-- 0.065(65毫秒)。如果该值为负,则向后输出比特流。
传输至VT系统的分辨率为纳秒。
请注意,输出精度在很大程度上取决于-0.0001(-10µs)和0.00001(10µs)之间的环境条件。
pause:指定波形两次重复之间的激励中断时间。传输至VT系统的分辨率为纳秒。有效值:0.0 -- 4294.0(4294 s)
numOfRepeats:指定要在一行中刺激曲线的次数,有效值:0 -- 65535(0表示曲线的无限重复)
startDelay:指定激励开始的延迟(秒)。这使得可以按定义的顺序启动多条曲线。仅VT2004、VT2816和VT2848模块支持此参数。传输至VT系统的分辨率为纳秒。
有效值:0.0 -- 4.0(4秒)
startPoint:指定激励应开始的受刺激曲线的点。这使得例如可以在不改变曲线的情况下开始具有不同相移的多条曲线。仅VT2004、VT2816和VT2848模块支持此参数。
有效值:0 -- 4096
返回值:
0:成功重置目标通道最大和最小值
-1:错误
-2: 调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3: 指定的参数之一无效。
Demo演示
下面示例展示了如何使用VT2004通道的PWM输出来模拟基于PWM的传感器(例如RPM传感器)。本例中使用的通道称为RPM_Sensor。
// Example of an arbitrary wave form for resistance stimulation
100
120 ; 2
140 ; 1
100
160 ; 4
100
SimulateSensorResistanceWF ()
{
// 选择电阻激励和波形曲线类型
vtsSetStimulationMode("VTS::Temp_Sensor", 3);
vtsSetCurveType("VTS::Temp_Sensor", 2);
// 负载波形(波形.TXT的内容如下所示)
vtsLoadWFResistance("VTS::Temp_Sensor", "C:\\WaveForm.TXT");
//配置波形。参数:
//TimeIncrement(保存每个样本的时间)=65ms
//暂停(两次波形重复之间暂停)=2s
//重复次数(重复次数)=3
vtsSetWFParams("VTS::Temp_Sensor", 0.065, 2.0, 3);
// 使用先前配置的波形开始刺激
vtsStartStimulation("VTS::Temp_Sensor");
}
![](https://img-blog.csdnimg.cn/img_convert/e0e30bb41ce4465c89ac250d76f176c2.png)
vtsSerialSetOnSendHandler - 设置在指定通道的串行端口上成功完成发送操作时发出通知的回调
![](https://img-blog.csdnimg.cn/img_convert/cf68a07d229f4ebbbaf7b407bdbf9a48.png)
功能:设置在指定通道的串行端口上成功完成发送操作时发出通知的回调。
set回调必须具有以下签名:void<OnSerialSend>(byte sendBuffer[],dword number)。
Target:目标通道变量空间名称,例如:VTS::PRM_Sensor
onSendCallback:CAPL回调函数名。
返回值:
0:成功重置目标通道最大和最小值
-1:非特定错误
-2: 调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3: 传递的回调没有所需的签名,即参数的数量或类型与预期不同。
Demo演示
参考vtsSerialSetOnReceiveHandler
vtsSerialSetOnReceiveHandler - 设置在指定通道的串行端口上接收到数据时发出通知的回调
![](https://img-blog.csdnimg.cn/img_convert/da301da767444f39a70229dad79edf86.png)
功能:设置在指定通道的串行端口上成功完成发送操作时发出通知的回调。
set回调必须具有以下签名:void<OnSerialReceive>(byte sendBuffer[],dword number)。
Target:目标通道变量空间名称,例如:VTS::PRM_Sensor
onRecviveCallback:CAPL回调函数名。
返回值:
0:成功重置目标通道最大和最小值
-1:非特定错误
-2: 调用命令的命名空间不存在、不是有效的VT系统命名空间或不支持此命令。
-3: 传递的回调没有所需的签名,即参数的数量或类型与预期不同。
Demo演示
RS232Init_Example ()
{
//声明RS232通信的变量
char stringToSend[20] = "Hello World !"; // 字符串发送
byte sendBuffer[20]; // 用于保存发送数据的字节数组
byte receiveBuffer[20]; // 定义接收buffer
int i; // 字符长度
//注册RS232回调函数
vtsSerialSetOnErrorHandler("VTS::ECUPowerSupply", "OnRS232Error");
vtsSerialSetOnReceiveHandler("VTS::ECUPowerSupply", "OnRS232Receive");
vtsSerialSetOnSendHandler("VTS::ECUPowerSupply", "OnRS232Sent");
//配置串行端口,即用于与外部通信
//ECU电源至9600波特,8个数据位,1个停止位,无奇偶校验
vtsSerialConfigure("VTS::ECUPowerSupply", eVTSBaudRate9600, eVTSDataBitsEight, eVTSStopBitsOne, eVTSParityNone);
// 打开串行端口,即与外部ECU电源通信
vtsSerialOpen("VTS::ECUPowerSupply");
// 短暂等待以确保应用了设置并且端口已就绪
TestWaitForTimeOut(10);
// 关闭串口
vtsSerialClose("VTS::ECUPowerSupply");
}