CANoe学习笔记3_--_Panel_Designer
CANoe学习资料3 --- Panel Designer
Xiang wei
2011-3-14
Panel Designer(⾯板设计器)是CANoe软件中另⼀个⾃带的交互式⾯板设计⼯具,与另⼀个⾯板设计⼯具Panel Editor(⾯板编辑器)具有相似的功能。
Panel Designer所设计出的⾯板,其保存格式是“.xvp”(Extended Vector Panel)。
Panel Designer中包含的基本控件供有16种,其名称、作⽤等信息参见下表,注意,有部分控件仅仅能够在CANoe中使⽤;还有部分控件在作为控制类型控件时,也仅适⽤于CANoe 软件,在CANazer中则以限制模式使⽤(也即仅仅能够作为显⽰控件使⽤,⽽且⽆法绑定环境变量)。
Panel Designer与Panel Editor的区别可参见下表所⽰:
对上表的⼏点总结:
(1)从表中可以看出,在创建⾯板上的控制或显⽰控件时,Panel Designer可以⽅便地使⽤拖拽功能,直接将控件元素从⼯具栏拖拽到⾯板上,从⽽完成创建⼯作;在关联环境变量或是信号时,也可直接将变量拖拽到控件上,以完成⾃动关联。这种特性在Panel Editor中是没有的。
(2)在使⽤Panel Editor编辑⾯板时,,可以使⽤⼯具栏上的运⾏按钮来随时运⾏编写的⾯板,以检验⾯板功能是否正确,这种特性被称之为⾯板的“测试模式“(Test Mode),注意该特性并没有在Panel Designer中提供。
(3)可以使⽤CAPL命令来控制Panel Editor制作的⾯板,如激活/不激活⾯板、改变⾯板上控件的颜⾊等,⽽这个功能在Panel Designer中也未提供。editor bar
(4)Panel Designer中并没有提供撤销/重做功能(这样有可能会给⾯板的编辑⼯作带来不便),该项功能仅仅在Panel Editor中提供。
Panel Designer中的⼤多数控件的功能都与Panel Editor相似,下表中提供了更加详细的对照信息。总体来说,Panel Editor中提供的控件更加丰富,但是Panel Designer中的控件拥有“属性”(Properties)窗⼝,在编辑时更加⽅便⾼效。
Analog Gauge Analog Gauge
Push Button
Button
Bitmap Push Button
Check Box
Combo Box Value Table Box Group Box Frame
Numeric Up/Down SpinControl Panel Help Button Panel Help Button Path Dialog FileSelection Picture Box
Bitmap
Static_Bitmap Progress Bar VectorBar
Radio Button Radio Button Static Text Text
Switch/Indicator Switch
Bitmap Switch/Indicator Bitmap_Button
Bitmap_Switch
Text Box Input/Output Box
Track Bar Slider,
BitmapSlider
Slider
Hex Editor
Panel Control button MessageDisplay MessageGroupControl Meter
这⾥列举了⼀个综合利⽤各种控件制作⾯板的实例。图中的⾯板包含有⾳量减、静⾳、⾳量加三个按钮,分别绑定了VOLUME_DWN、VCI_MUTE、VOLUME_UP三个环境变量,⽤以控制RNEG2010的⾳量;在“Trame 0Xb6 switch”区域则包含⼀个开关控件和⼀个⽂本框,分别绑定了环境变量Trame_switch、Speed2,按下开关时,CANoe开始⾃动发送信息帧
0xB6
(ID_DONNEES_BSI_RAPIDES),在VITV框中输⼊⼗进制的速度值后,在右侧的仪表上能观测到对应的速度值,仪表控件同样绑定了环境变量Speed2。
源程序如下所⽰:
variables
{
message0xB6 mSpeed; // 定义信息帧ID_DONNEES_BSI_RAPIDES message 0x21F mRadio; // 定义信息帧ID_CDE_RADIO
msTimer tSpeed; // 为循环发送信息帧0xB6定义⼀个定时器
}
on envVar Trame_switch // 是否发送信息帧0xB6
{
if(getvalue(this) == 0x1) // 当开关被按下时
{
setTimer(tSpeed,10); // 10ms之后开始发送信息帧0xB6
}
else if(getvalue(this) == 0x0) // 若开关弹起后
{
cancelTimer(tSpeed); // 停⽌发送
}
}
on envVar Speed2 // 仪表控件接收到VITV⽂本框中的速度信号后{
mSpeed.VITV = getvalue(this)*100; // 显⽰出速度值
on envVar VCI_MUTE // 静⾳功能
{
If(getvalue(this) == 0x1) // 静⾳激活
{
mRadio.VOLUME_DWN_ET_HDC = 0x1;
mRadio.VOLUME_UP_ET_HDC = 0x1;
output(mRadio);
}
else if(getvalue(this) == 0x0) // 静⾳关闭
{
mRadio.VOLUME_DWN_ET_HDC = 0x0; mRadio.VOLUME_UP_ET_HDC = 0x0; output(mRadio);
}
}
on envVar VOLUME_UP // ⾳量加{
if(getvalue(this) == 0x1)
{
mRadio.VOLUME_DWN_ET_HDC = 0x1; output(mRadio);
}
}
on envVar VOLUME_DWN // ⾳量减
{
if(getvalue(this) == 0x1)
{
mRadio.VOLUME_DWN_ET_HDC = 0x1; output(mRadio);
}
}
on timer tSpeed // 循环发送信息帧0xB6 output(mSpeed);
setTimer(tSpeed,200); // 每隔200毫秒发送⼀次}