用CAPL在CANoe中创建用户登入界面(一)
CANoe是德国Vector公司开发的专门用于仿真和测试CAN通讯的软件,在汽车电子开发中使用十分广泛。在使用时会用到CANoe的CAPL编程,CAPL是一种类C语言,属于面向对象的语言。
我是刚接触CANoe,对CAPL编程也不熟悉,写这篇博文主要是对CANoe的一个入门。
一.开发需求
客户需要在CANoe中有用户登入的界面,可能是便于管理各个工程人员的工作进度等,但就我公司对CAPL的理解似乎无法完全满足客户的需求,所以暂时让我写的是较为简单的登入界面,策略则采用在启动CANoe之后一段时间内必须登入账号否则CANoe会强制停止运行。
目前这项功能尚处于较为初级的阶段,若之后有进一步修改,会陆续更新博客。
二.Panel界面
点击Tools-Panel Designer,会打开新的Panel设计的界面,在这里编辑Panel界面,并与System Variables相关联,在CAPL中调用相应的System Variables即可完成人机交互,实现用Panel界面对CANoe的控制。
上面便是打开的Panel界面,在这里你可以通过Toolbox拖拽控件至Panel中,实现不同的控件功能,在这里只简单介绍我所用到的控件,有兴趣可以去看Panel的help文档,原理相类似,不再过多赘述。
要是在打开的界面中缺少Toolbox工具栏,可以通过views下拉菜单中勾选出Toolbox
在Toolbox中选择Input/Output box以及Button两个控件拖拽至Panel界面,其中Input/Output box顾名思义就是可以作为输入输出,一些类型的界面可能用到它来发出具体的指令,如车速等,也可以用它来反映各种参数,如车速等。而Button则是一个按钮,可以作为触发器等,在做好界面后我们可以通过Properties对控件做出具体的定义,让它更符合我们的需求。
首先我们对Input/Output box做出修改,很多选项只是显示的属性,可以忽略不计(要是喜欢美化也可以进一步研究,这里难度不大,多尝试下就好了,不说了)。
重点 1.Appearance Description-Description,这里显示输入输出框之前的提示,在这里我写了ID,因为是用户登入。
这就是定义这一项前后的变化。
2.Button控件的定义相类似,读者自行学习吧!☺
3.但现在的Panel界面还只是单纯的界面,界面与System Variables还没有相互关联,此时在Panel中输入任何数据都是没有意义的,所以需要将Panel界面中的控件和System Variables相关联,但到现在为止我们还未定义过System Variables,
所以我们需要回到CANoe界面定义System Variables。
三.System Variables界面
我们回到CANoe的主界面,在Environment中点击System Variables会打开新的窗口,在System Variables中可以添加,编辑我们的系统变量,能够帮助我们关联Panel界面和CAPL脚本。
在左边空白区域右键new一个新System Variables。
在Namespace和Name中定义名字即可,注意,这里定义的名字便可以认为是变量名,在Panel界面便是需要与这个变量名关联,CAPL中调用也是用这个名字,注意不要重命名。
在数据类型的下拉框中,我们把ID,Password定为字符串类型,而Button则可以定义为int型(有多种int型,随便一种都可以,但选择64bit可能有点浪费),因为CANoe中好像没有布尔类型,所以用int型所替代。
这样我们的System Variables便定义完成了。回到Panel界面与System Variables相关联就可以了。
四.Panel界面中关联System Variables
在定义好System variables后,Panel界面就出现了上图的系统变量,将System variables中所定义的各个变量拖拽到Panel界面的控件上,便实现了控件和系统变量的关联。若关联成功,则会出现下面的情况。
到这里我们开发的界面就完成了,之后就是CAPL的编程。请看下一节。