LabVIEWwilliam hill官网
直播中

xxx

8年用户 570经验值
擅长:电源/新能源 制造/封装
私信 关注
[问答]

请问如何在子面板项目中,控制子面板。

现在在做一个子面板项目,就是上面一排按钮,下面一个子面板框,每一个按钮对应一个VI,点击按钮可以切换VI。
现在的问题是,程序主体肯定是运行在外面的,要如何用外面的程序控制子面板VI。
比如我要切换VI,我需要把当前的VI停止掉,但是如果使用“中止VI”这类强制命令,容易造成数据出错。最好的方法是触发当前VI的正常停止功能。
我的子面板VI都是用“消息队列”的框架,停止VI的方法是向队列中发送一个“exit”消息,请问这个操作可以在主VI中用程序的方式,控制子面板VI么。如果是写入一个控件值,倒是有相关的“调用节点”方式,不过如果要向队列中发送一个消息,还不知道如何处理。
子面板类的项目,请问有没有大神知道哪里有模板?好像这一块还有个预初始化的问题,否则子面板VI切换很卡,这一块还不知道去哪里查找相关知识,请大神不吝赐教!
已退回40积分

回帖(28)

asdasdaw

2017-3-18 12:23:51
我觉得最方便的方法是把子面板启动后把的队列引用保存在全局变量里面,这样就可以从外部发消息给子面板了。反应慢可能是你子面板vi比较大,在主程序启动时使用打开vi引用试一下吧
举报

张_大白

2017-3-18 12:34:35
我感觉可以用case结构,首先通过条件分支语句,发送exit停止Vi,接着仍然用case语句调用具体Vi,这里面的主程序和之程序的切换主要在于分支条件的设立。可以尝试取一个输出值,然后加上一个数,作为条件等。
举报

xxx

2017-3-18 12:47:53
本帖最后由 羊驼啊 于 2017-3-18 13:00 编辑
引用: ShuiMoLise 发表于 2017-3-18 12:23
我觉得最方便的方法是把子面板启动后把的队列引用保存在全局变量里面,这样就可以从外部发消息给子面板了。反应慢可能是你子面板vi比较大,在主程序启动时使用打开vi引用试一下吧

真的假的,队列引用都可以作为全局变量啊。。。我试试看。
目前我已经想到一个解决方案了,在每个子面板VI中,增加一个while,一旦检测某个控件值置高,则发送exit信息。修改控件值还是方便地,无论是用“调用节点”还是全局变量。
补充,确实可以把队列引用放到全局变量里,实在是强大。
举报

xxx

2017-3-18 12:49:22
引用: 张_大白 发表于 2017-3-18 12:34
我感觉可以用case结构,首先通过条件分支语句,发送exit停止Vi,接着仍然用case语句调用具体Vi,这里面的主程序和之程序的切换主要在于分支条件的设立。可以尝试取一个输出值,然后加上一个数,作为条件等。

唔,不是很明白你的意思,不过还是感谢回复
举报

更多回帖

发帖
×
20
完善资料,
赚取积分