首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SubVI中一步控制折射率值的求取

SubVI中一步控制折射率值的求取
EN

Stack Overflow用户
提问于 2016-04-21 11:40:42
回答 3查看 2.9K关注 0票数 2

我试图通过创建只处理相关控件的SubVIs,通过控件拒绝来消除一个大的UI。

现在,当从主VI中提取代码并重新连接到子VI中时,事情变得杂乱无章。

要读/写这些推荐信,我必须做两个步骤。首先添加一个终端以获得控件折返值,然后添加另一个终端以获取该控件的值。

在任何地方连接拒绝并不是一个真正的选择,因为这将创造更多的意大利面,如果有两个以上。(通常为4-10)

有更好的办法吗?

更新

伙计们,这是一个关于上面图片的低级问题,不是关于大规模架构/设计模式的问题。我用的是QMH,类,et.al。视情况而定。

我只是觉得应该有一种方法从类型化控件ref中一步获得类型化值。感觉有点普通。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-22 02:58:26

在调用方VI中,在控件/指示符实际存在的地方,创建所有引用,然后将它们捆绑到相关片段的集群中。将集群传递到您的子subVI中,只给出它需要的集群。这既保持您的丙烷清洁,并使它清楚的接口,每个subVI正在交谈。您可能希望创建一个LV类来进一步封装和定义子UI操作,而不是集群,但这通常只适用于较大的项目,其中一些UI组件将在其他UI中重用。

票数 3
EN

Stack Overflow用户

发布于 2016-04-21 15:19:20

我不确定是否有一种低触点的方式去消除意大利面,一个有很多控制和指示器的UI。

我的建议是将顶层VI重新工作到排队消息处理程序中,这将允许您将用户交互与应用程序的响应分离开来。换句话说,与其将处理其更改的控件和代码都移动到子this (正如您当前所做的那样),不如将控件保持在它们所在的位置(因此您不需要使用ref num和属性节点),而只将代码移动到subVIs。

此设计模式内置于LabVIEW的最新版本:导航到文件?创建项目,以使LabVIEW生成您可以评估的项目。有关如何扩展和自定义它的更多信息,请参见此NI幻灯片库:队列消息处理模板设计背后的决策

票数 2
EN

Stack Overflow用户

发布于 2016-04-21 12:02:42

一般来说,从性能角度来看,使用refnum读取/写入值并不是最佳做法。它需要每次将线程交换到UI线程(这是一个很重的进程),而FP终端可以在不切换执行线程和互斥摩擦的情况下更新面板。

使用对访问值的引用,需要在每次调用前面板项时更新它们。 它们是按引用传递的函数,而不是按值传递的函数。这意味着它们本质上是指向特定内存位置的指针。指针必须是非引用的,然后更新内存中的值.取消引用变量的过程会导致它们比控件/指示符或局部变量慢。属性节点导致SubVI的前面板保持在内存中,这增加了内存的使用。如果没有显示SubVI的前面板,请删除属性节点以减少内存使用。

如果在此之后要使用此方法,则可以使用VI脚本来加快进程:http://sine.ni.com/nips/cds/view/p/lang/en/nid/209110

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36768500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档