概要
Labvewi_DQMH_浅析
Labvewi_DQMH_模板的运用
基于前两期内容的实操后,对DQMH框架有了一个初步的认知。在Module之间通过Request事件和Broadcast事件传递信息,并借助模板相对简便的实现多个Module的创建;随之而来的一个新问题:每个Module都有自己的界面窗口,在一个项目中可能会打开多个窗口去实现相关功能,这样看起来不是很有条理;因此需要建立一个UI界面,借助其内部的子面板,更加有序和工整的将所需界面进行展示。
本文主要介绍如何在DQMH框架下运用子面板(Subpanel)技术。此方法源于相DQMH关视频教程,是在常规子面板技术(本文不赘述)基础上,结合DQMH框架特点将其灵活运用的一种方式。个人觉得在实际项目中会比较实用,顾在此结合之前的例子与大家分享。
实现方法
一个简单的例子
假设在DQMH框架中分别建立了两个Module :DA和UI。现在要将DA的界面,嵌入到UI界面的子面板中,达到如下图所示的效果。
-
首先来分析一下这两个Module的Main.vi :
DA .lvlib:Main.vi ,如下图所示,在DA的程序框图的initialize部分,需要建立一个Subpanel的引用句柄,它的作用是传入UI.lvlib:Main.vi中创建子面板的引用句柄;然后通过调用节点来控制UI中子面板控件的方法(如框图中所示,先通过Remove方法,清空子面板,然后通过Insert方法在子面板中插入一个面板);框图中插入的是本VI,也就是DA .lvlib:Main.vi的前面板,由于插入子面板的前提条件是前面板是Close状态,所以在插入之前先将自己的前面板通过FP.Close方法关闭了。
这个过程可以类似的想象为:在Windows系统中,一个叫UI的电脑通过远程桌面的方式,访问一个名为DA的电脑。在UI电脑屏幕显示DA桌面的同时,DA电脑自身的桌面一定是不可显示的状态。
UI.lvlib:Main.vi,如下图所示,UI前面板中的子面板通过引用的方式传递给了DA的启动VI 即Start Module.vi。
你仔细的捋一下,前面两个框图DA 和 UI 虽然是独立的VI, 可以是两个VI之间通过一个引用相互联系。有一种我中有你,你中有我的感觉。UI和DA之间有一个小桥DA .lvlib:Start Module.vi(这个桥是DA建的),子面板的引用可以在桥上通过。 -
然后,你可以用上帝视角来看一下,站在高处你可以看到来龙去脉,看下面这个图!