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

2019-07-17 11:00发布

现在在做一个子面板项目,就是上面一排按钮,下面一个子面板框,每一个按钮对应一个VI,点击按钮可以切换VI。
现在的问题是,程序主体肯定是运行在外面的,要如何用外面的程序控制子面板VI。
比如我要切换VI,我需要把当前的VI停止掉,但是如果使用“中止VI”这类强制命令,容易造成数据出错。最好的方法是触发当前VI的正常停止功能。
我的子面板VI都是用“消息队列”的框架,停止VI的方法是向队列中发送一个“exit”消息,请问这个操作可以在主VI中用程序的方式,控制子面板VI么。如果是写入一个控件值,倒是有相关的“调用节点”方式,不过如果要向队列中发送一个消息,还不知道如何处理。
子面板类的项目,请问有没有大神知道哪里有模板?好像这一块还有个预初始化的问题,否则子面板VI切换很卡,这一块还不知道去哪里查找相关知识,请大神不吝赐教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
ShuiMoLise
1楼-- · 2019-07-17 13:26
我觉得最方便的方法是把子面板启动后把的队列引用保存在全局变量里面,这样就可以从外部发消息给子面板了。反应慢可能是你子面板vi比较大,在主程序启动时使用打开vi引用试一下吧
张_大白
2楼-- · 2019-07-17 14:51
我感觉可以用case结构,首先通过条件分支语句,发送exit停止Vi,接着仍然用case语句调用具体Vi,这里面的主程序和之程序的切换主要在于分支条件的设立。可以尝试取一个输出值,然后加上一个数,作为条件等。
羊驼啊
3楼-- · 2019-07-17 16:18
本帖最后由 羊驼啊 于 2017-3-18 13:00 编辑
ShuiMoLise 发表于 2017-3-18 12:23
我觉得最方便的方法是把子面板启动后把的队列引用保存在全局变量里面,这样就可以从外部发消息给子面板了。反应慢可能是你子面板vi比较大,在主程序启动时使用打开vi引用试一下吧

真的假的,队列引用都可以作为全局变量啊。。。我试试看。
目前我已经想到一个解决方案了,在每个子面板VI中,增加一个while,一旦检测某个控件值置高,则发送exit信息。修改控件值还是方便地,无论是用“调用节点”还是全局变量。
补充,确实可以把队列引用放到全局变量里,实在是强大。
羊驼啊
4楼-- · 2019-07-17 19:10
 精彩回答 2  元偷偷看……
风卷雪
5楼-- · 2019-07-17 19:40
只用全局变量和局部变量就搞定,哪有那么麻烦。
宁静致远。。
6楼-- · 2019-07-18 00:01
队列是可以在不同vi之间传递的,既然只用发送一个“exit”消息就可以关闭子面板,可以在点击另一个vi的时候发送“exit”消息给当前vi的队列即可。附上自己由NI范例改写的两个vi,希望对你有帮助!

队列.zip 下载积分: 积分 -1 分

32.01 KB, 下载次数: 71, 下载积分: 积分 -1 分

一周热门 更多>