您的位置:首页 > 产品设计 > UI/UE

LabVIEW的Framework(4):在GUI程序里传递数据

2008-12-03 19:57 204 查看
前一篇里说了在GUI程序里使用消息队列,提到了使用消息队列是用来实现代码的重复使用,类似于subVI的作用。subVI,也就是类似于传统编程语言里的函数概念,那我们就的讨论一下怎么传递数据了。要在以前,说到传递数据,我肯定第一个想法就是用Local Variable。NI的人无数次跟我说,使用Local Variable是有效率问题的,能不用就不用,而我一直坚持有需要就用的原则,弄得一个程序里Local Variable满天飞。自从师弟跟我说过了他实习的地方使用的消息队列处理框架之后,我才发现,原来程序可以写成这样,数据还可以这样传递。
好了,打住题外话,我们来看看怎么样传递数据。还是上一篇的程序,OK、Apply、Cancel三个按钮,点击OK、Apply按钮都会弹出一个对话框,显示的内容都是Apply。这次,我们要改变一下,从对话框显示的内容来区分一下点击的是OK还是Apply。



后面板,在while循环上添加一个shift register,构造一个cluster,其中包含一个名字叫Message的字符串,连到shift register上。这个shift register就是帮助我们来传递数据的手段了。shift register是专门优化过的,其效率要比Local Variable高多了,用来传递数据是再合适不过。在OK和Apply的事件里分别给Message赋值:"OK"和"Apply",然后在case的Apply Changes里,把对话框的输入连到传递的数据上,工作完成了。运行一下看看效果吧。









在这个程序里,我们使用shift register完成了数据的传递,避免了Local Variable的使用,使得程序的运行效率得到了很大的改善、更重要的一点是代码的可读性提高了。试想一下,在一个规模大一点的程序里,出现了Local Variable满天飞的情况,要理清这些数据的源头可就得费半天劲儿了,更别说读了,再更别说代码的调试和后续维护了,现在光想想我就觉得头皮发麻。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: