基于Labview的虚拟仪器人机界面模式设计
本文引用地址:https://www.eepw.com.cn/article/201701/337669.htm
3.2 弹出式界面模式
弹出式界面模式的特点:在主程序面板按下子功能按钮时,将弹出相应功能的子程序面板,子面板运行完毕后将返回主面板。
3.2.1 前面板设计
我们将各子功能模块做成多个子程序,为调用方便与主程序放置在同一路径下。主程序的前面板只需实现相应功能的调用按钮配置。当需要使用某项功能时,按下对应的按钮即可将子程序界面调出,执行完毕后关闭子程序则可退回主程序界面,进行其他功能的调用。虚拟信号发生器运行过程中的弹出式界面如图3所示(调用"常用波形发生"子功能程序)。
图3 弹出式界面模式下的前面板架构
3.2.2 框图程序设计要点
利用Labview的事件驱动功能可以较容易地实现弹出式界面的设计要求,因此我们选择事件结构来实现虚拟信号发生器的弹出式界面的程序设计。
在主程序的事件结构中,为每个功能按钮的事件发生指定相应子功能程序的调用。这样,每次当某一功能按钮按下时,Labview会自动通知程序所发生的事件,然后按照为这个事件指定的程序代码对事件进行响应。主程序的框图设计如图4所示。
图4 弹出式界面模式的主框图程序
弹出式界面模式的优点在于界面及程序结构清晰,所有子模块单独编程,由主程序按需调用,这样可以大大减少编程的复杂程度。
3.3 动态调用模式
动态调用模式的特点:子功能程序仅在被调用时动态加载入内存,调用结束后即释放。
3.3.1前面板设计
我们将程序界面分为左右两个区域:左边区域设置各功能按钮,可按需调用子功能;右边区域由子面板控件subpanel构成,在子功能被调用时显示和运行相应界面及功能。图5所示的是程序调用"函数信号发生"子功能程序时的界面情况。
图5 动态调用模式的前面板
3.3.2 框图程序设计要点
为了方便调用子功能程序,将主程序和各子功能程序保存在同一路径下。
主程序运行时,当需要调用某一子功能程序时,首先应该知道该子程序的整体路径:可以先使用cur-renl VIS Poih函数和Stdp Path函数获取主程序的路径,将此路径与需要调用的子程序名合成子程序的整体路径。然后由loodondRun函数将已知路径的子程序加载并启动,最后在subponel控件对应的调用节点中使用Insert VI方法将子程序的面板插入子面板控件中。
不同子功能程序的选择要求由选择结构实现。
动态调用界面模式的优点在于子模块单独编程,结构清楚,编程的复杂程度低;程序动态加载,占用内存少,加载速度快。
4 总结
我们基于虚拟信号发生器的设计对Labview编程中常用的三种人机界面模式:整体界面模式、弹出式界面模式、动态调用界面模式进行了详细的分析和研究,在实际项目开发中可以根据具体情况直接选用这些模式进行界面设计,也将它们综合使用,以达到更高的设计要求。
另外需要指出的是,每种模式的实现方法也是灵活多变的,比如2.1中涉及到的互锁按钮也可以用枚举(Enum)控件实现相同的功能。而互锁逻辑的实现也能使用事件结构结合设置控件属性节点的方法实现:当某一功能按钮(如"常用波形"按钮)按下时,执行相应程序代码:将自身的逻辑值置为lrue,同时使其他功能按钮的值为false.
评论