程序员社区

CAPL学习之路-普遍性函数、访问CANoe变量和面板、字节交换

普遍性函数

CompleteStop

表示CANoe停止前的preStop阶段的完成

这句话什么意思

需要结合下面的一个方法一起说明

DeferStop

推迟CANoe停止的生效

首先需要明白的是,当点击CANoe运行图标时,会经历两个阶段,preStart和start

我们可以在capl中用on preStart和on start这两个回调函数来设置CANoe运行时需要的一些条件

其中,preStart比start要更提前一点,然而,实际测试中发现它们完全同步

on preStart
{
  write("preStart time: %d", timeNow()/100);
}
on start
{
  write("start time: %d", timeNow()/100);
}  

CAPL学习之路-普遍性函数、访问CANoe变量和面板、字节交换插图

同样地,当停止CANoe运行时,也会经历两个阶段,preStop和stopMeasurement
我们可以在capl中用on preStop和on stopMeasurement这两个回调函数来设置CANoe停止时需要的一些条件

其中,preStop比stopMeasurement更早一点

这里要明确一点,只有preStop阶段完成,才会停止CANoe的运行

实际测试两者的时间差为

on preStop
{  
  write("preStop time: %d", timeNow()/100); 
}
on stopMeasurement
{
  write("stopMeasurement time: %d", timeNow()/100);
}  

打印的结果为

CAPL学习之路-普遍性函数、访问CANoe变量和面板、字节交换插图1

可以看出preStop到真正的stop差10毫秒,也可以说是preStop持续10毫秒

DeferStop函数的作用是推迟stop生效,也可以看成是延长preStop持续的时间

可以做个试验

on preStop
{  
  write("preStop time: %d", timeNow()/100);
  DeferStop(10000);  
}
on stopMeasurement
{
  write("stopMeasurement time: %d", timeNow()/100);
}  

如果在preStop时调用函数DeferStop(10000),推迟stop生效的时间为10秒

打印的结果为

两者的时间差确实是10秒

这里当你点击CANoe的stop按钮时,有个有趣的现象,就是点击stop时,首先打印了on preStop里的结果,然后stop图标并没有变灰色(说明程序未真正的停止),10秒以后,stop图标变为了不可用状态,且打印了on stopMeasurement里的结果

CAPL学习之路-普遍性函数、访问CANoe变量和面板、字节交换插图3

那函数CompleteStop呢,这里我们再做一个实验

on preStop
{  
  write("preStop time: %d", timeNow()/100);
  DeferStop(10000);  
}
on stopMeasurement
{
  write("stopMeasurement time: %d", timeNow()/100);
}
on key 's'
{
  CompleteStop();
}  

当我们在10秒的preStop阶段内,点击键盘上的按键s,触发函数CompleteStop(),看下打印的结果

CAPL学习之路-普遍性函数、访问CANoe变量和面板、字节交换插图4

发现preStop到stop的时间差并没有10秒,说明调用的函数CompleteStop()完成了本应该持续10秒的preStop阶段,从而进入了stop阶段

GetBusContext

获取capl所在的节点的总线信息,返回的值不是总线channel,这必须要注意

CAPL学习之路-普遍性函数、访问CANoe变量和面板、字节交换插图5

可以把它理解成是一个句柄

GetBusNameContext

获取指定总线的信息,要传入指定总线名称

CAPL学习之路-普遍性函数、访问CANoe变量和面板、字节交换插图6

getConfigurationName

返回config文件的信息,这里可以理解成句柄,要传入config文件名作为参数

CAPL学习之路-普遍性函数、访问CANoe变量和面板、字节交换插图7

GetComputerName

获取计算机的全名

GetEventSortingStatus

确定事件排序状态是否正确,这里的事件通常指message

GetIPAddress

获取计算机的第一个ip地址

gmLanGetPID

这个咨询了做通用项目的小伙伴,像这种GMLAN字样的,都是通用独有的GMLAN网络协议,vector专门为它们集成在里面了

interpretAsDouble

这是数据类型的强制转换,把其他类型转成double类型

其他数据类型的转换方式

SetBusContext

设置capl模块的总线

traceSetEventColors

设置trace窗口中消息显示的字体和背景颜色

traceWindowClear

清除trace窗口中的内容

访问CANoe变量和面板

callAllOnEnvVar

调用所有的环境变量的on envVar事件,这个函数一般用在on start里,用来初始化环境变量

ClockControlReset

重置面板上的时钟控件

ClockControlStart

启动面板上的时钟控件

ClockControlStop

停止面板上的时钟控件

closePanel

关闭一个面板

DeleteControlContent

删除面板上的输出控件上的内容

enableControl

激活或停用面板上的指定的控件

getValue

获取环境变量的值

getValueSize

获取环境变量的值的字节的大小

MakeRGB

从三个原色值来计算颜色值,返回的值用来设置控件的背景色等

MakeARGB

根据alpha值和三个原色值计算颜色值,返回的值用来设置控件的背景色等

openPanel

打开一个面板

putValue

为环境变量赋值

putValueAsync

为环境变量赋值

putValueToControl

为面板上的控件赋值,这个值的类型是多样的,有可能是数字、字符串、消息等

SetClockControlTime

设置面板上的时钟控件的时间

SetControlBackColor

设置面板控件的背景颜色

SetControlColors

设置面板控件的背景和字体颜色

SetControlForeColor

设置面板控件的文本颜色

SetControlProperty

设置面板控件的属性

SetControlVisibility

设置面板控件的可见性

SetDefaultControlColors

将面板控件的背景和文本颜色恢复为默认颜色

SetMediaFile

替换媒体播放器的媒体文件

SetMediaStream

面板媒体流运行时替换指定索引处的媒体流

SetPictureBoxImage

替换面板图片框中的图片

sysSetVariableAsync

为系统变量赋值

字节交换

小端转大端

CAPL学习之路-普遍性函数、访问CANoe变量和面板、字节交换插图9


赞(0) 打赏
未经允许不得转载:IDEA激活码 » CAPL学习之路-普遍性函数、访问CANoe变量和面板、字节交换

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区