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中也未提供。
(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毫秒发送一次}