LabVIEW的Framework(3):在GUI程序里使用消息队列

    使用LabVIEW的Framework模板Queued Message Handler新建一个vi,如下图:
LabVIEW的Framework(3):在GUI程序里使用消息队列_第1张图片
    这就是一个消息队列处理器。在while循环里的shift register就是用来存放消息的队列,也就是一个字符串数组,其中的每一个字符串就是一条消息。每循环一次,就从消息队列里取出一条消息,然后通过case结构进行处理。需要注意的是,取出消息使用的是Delete From Array,最后放入队列的消息最先得到处理。
    现在我们来改造一下这个结构,把它做成一个GUI程序。现在前面板放置三个Button:OK、Apply、Cancel。这个程序我们用来模拟一个设置对话框,这三个按钮是一个设置对话框中标准配置。Apply用来保存设置,OK在保存设置后退出对话框,Cancel则不保存设置直接退出对话框。
LabVIEW的Framework(3):在GUI程序里使用消息队列_第2张图片
    在后面板,在No Event这一页中,放入一个Event Structure,然后分别为前面放置三个Button添加Event。注意在OK里添加的两条消息的顺序,原因前面说了。然后,在case结构里再添加Apply Changes和Exit两个分支。

LabVIEW的Framework(3):在GUI程序里使用消息队列_第3张图片
LabVIEW的Framework(3):在GUI程序里使用消息队列_第4张图片
LabVIEW的Framework(3):在GUI程序里使用消息队列_第5张图片
LabVIEW的Framework(3):在GUI程序里使用消息队列_第6张图片
LabVIEW的Framework(3):在GUI程序里使用消息队列_第7张图片
    好了,我们的模拟对话框程序就完成了。运行起来,分别点一下那三个Button,看看程序运行的结果。

    事情还没完,我们为什么要使用消息呢?其实从这个简单的程序里已经可以看到答案的,那就是代码的重复使用。在OK的处理中,使用了Apply Changes和Exit两条消息,Apply和Exit分别使用了其中一条,这就起到了类似于subVI的作用。为什么不用subVI呢?想一下,如果在消息处理中,涉及到很多界面相关的内容的时候,是不是使用subVI就显得繁琐和困难了很多呢?

你可能感兴趣的:(LabVIEW)