LabVIEW子面板

LabVIEW中不支持多窗口(MDI),多个运行的VI各自具有自己的单独窗口(前面板)。子面板的出现在一定程度上解决了多窗口的问题。字面版属于容器型控件,在子面板中,可以插入其他VI的前面板,传入部分不包括菜单栏,标题栏等。

首先在前面板中,布置一个子面板控件,调整至合适的位置和大小,此时在程序框图中会自动出翔子面板的“插入VI”方法。子面板本身只有“插入VI”和“删除VI”这两个方法。调用“插入VI”方法后,插入VI的前面板将被加载到子面板中,一直到主VI推出或者使用"删除VI"方法,才能卸载子面板中的VI。

注意,"删除VI"方法只是卸载子面板中插入的VI,不一定从内存中卸载该VI。只在没有其他引用指向该VI时,才会从内存中彻底卸载它。

另一个需要注意的问题是,插入VI必须保证不能打开前面版。已经打开前面板的VI,在被插入子面板时会产生错误。

使用三种不同的方式,演示在子面板中如何插入VI。三种方式插入的效果时相同的。这三种方式分别是"动态调用方式","异步调用方式"和"静态调用方式"。

1.动态调用VI插入子面板

运行动态调用VI后,利用子面板的”插入VI方法“,将其插入子面板中。这是子面板最常见的应用方式。

首先创建一个"动态调用"子VI,该VI负责启动运行三个插入VI,并返回这三个VI的引用数组,供"插入VI"方法使用。

必须注意与常规的动态调用不同,一定不要显示插入VI的前面板。

子面板主VI非常简单。前面板中的枚举控件用于选择插入子面板的VI,在插入一个新VI之前,首先调用"删除VI"方法,然后利用"插入VI"方法,在子面板中显示插入VI的前面板。推出子VI时,循环调用”中止VI“方法,结束所有插入VI。

2.异步调用VI插入子面板

异步调用时LabVIEW新增功能,对于不需要显示前面版的插入VI,异步调用更为方便。异步调用VI,要求调用的子VI具有相同的类型,也就是有相同的连线版。

异步调用与严格类型的VI动态调用非常类型,但是存在本质区别。严格类型的VI动态调用必须等VI运行结束后,才能返回主调VI。异步调用不必等待调用的VI结束,它启动一个单独运行的异步任务,类似于一般的动态调用,但是异步调用运行从连线版输入运行的初始数据。

异步调用VI的程序框图与子面板调用VI的程序框图相差不多

3.并行的静态调用VI插入子面板

虽然在多数情况下,插入子面板的VI都是动态调用或者异步调用的。但是某些情况下,并行的静态调用VI也是可以插入子面板的。比如静态调用的并行VI偶尔需要显示前面板,做一些参数的调整。

并行的静态调用VI是不能通过"中止VI"方法结束运行的。只能通过全局变量,队列,通知器等发送消息让并行的VI自己结束运行。

另外,对于插入子面板的VI,需要获得它的引用。由于是静态调用,所有获取引用的方式与静态调用是不同的。

主VI与插入VI之间的数据交换与动态调用VI的方式相同。可以通过引用,设置控件值,全局变量,队列,通知器,以及用户事件等进行数据交换。

4.在多个子面板中插入相同VI

动态调用的VI,如果被设置为可重入方式,则当它被多次调用时,可以自动为他们分配各自的内存空间,对于动态调用VI,可以通过模板或者将VI设置为可重入的方式,实现同一VI的多次调用,但是插入到子面板的VI,只能通过模板方式多次调用。

必须将插入VI存储为VIT格式。

5.判断VI是否插入子面板

子面板仅仅提供了两个方法和几个属性,因此很难对子面板进行控制,如果一个VI的前面版以及打开,那么是不能将它加载到子面板的。通过VI的方法和属性节点,很容易判断VI的前面板是否打开,但是无法判断VI是否以及被加载到子面板中。

一个加载到字面版中的VI,它的前面板的”可调整大小“属性会自动被设置为只读状态。因此,我们可以通过前面板的”可调整大小“属性来间接判断VI是否被加载到子面板中。当然,这么做的前提是VI的可调整大小属性预先被设置为可改变。判断VI是否被加载到子面板中的程序框图

5.子面板的属性

子面板具有"容器边界"和”透明“属性,通过”容器边界“属性可以调整子面板的大小。同时设置水平,垂直滚动条的显示方式。

该例子使用了OpenG中的”矩阵大小“函数,该函数通过矩阵的左上角点和右下角点计算出矩阵的宽度和高度。

如果子面板的”透明属性设置为真“,则插入子VI具有与主调VI同样的背景色。如果没有设置为假,则插入子VI保持原有背景色。

### LabVIEW面板的使用方法 在 LabVIEW 的开发环境中,面板(Subpanel)是一种用于嵌入其他 VI 前面板的功能模块。它允许开发者在一个 VI 的前面板中显示另一个 VI 的前面板内容,从而实现更复杂的交互设计。 #### 创建和配置面板 要创建并使用面板,可以按照以下方式操作: 1. **放置控件** 将“面板”控件从工具栏拖放到目标 VI 的前面板上[^2]。此控件位于控件选板中的“新式»显示»面板”。 2. **绑定VI** 需要在程序框图中连接一个引用(Reference),该引用指向需要加载到面板上的 VI。这通常通过 `Open VI Reference` 函数完成。例如: ```labview Open VI Reference.vi ``` 此函数会返回一个引用句柄,供后续操作使用。 3. **加载VI至面板** 使用 `Set Subpanel VI` 节点将引用传递给面板控件。这样即可将指定的 VI 加载到面板中[^3]。 4. **卸载VI** 当不再需要某个VI时,应调用 `Close VI Reference` 来释放资源,并清除面板的内容。 #### 控制VI行为 对于VI的行为控制,可以通过调整其属性来满足需求。具体做法如下: - 右键点击VI图标,在弹出菜单中选择「VI 属性」。 - 进入「窗口外观」分类下的设置界面。 - 利用其中的选项调节VI运行期间的表现形式,比如是否自动隐藏、最小化等特性[^1]。 #### 解决常见问题 以下是关于 LabVIEW 面板的一些典型疑问及其解决方案: 1. **无法正常显示VI前面板** 如果发现面板未能正确呈现关联的VI,则需确认已成功建立有效的引用链接;另外还需检查是否有权限访问所涉及的目标 VI 文件。 2. **性能下降明显** 大量频繁切换不同 VI 至同一面板可能会引起效率降低现象。对此建议优化引用管理逻辑,减少不必要的重新加载动作。 3. **数据同步困难** 在多个独立线程间共享来自同一个VI的数据可能遇到竞态条件等问题。此时推荐采用事件结构或者队列机制协调各部分之间的通讯流程。 ```labview // 示例代码片段展示如何初始化以及关闭VI引用 Init Ref: Call Library Node -> Open VI Reference (Path to Target VI) Cleanup Ref: Close VI Reference (Input Previous Created Ref) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值