LabVIEW的Framework(6):GUI程序框架实例

前面把lv里面的框架相关元素都基本介绍了一下,现在做一个完整的例子,体会一下框架是如何工作的。这个框架结构是我在具体的实践中总结出来的,也还在不断的摸索完善。刚开始的时候发现用框架感觉有点变扭,但是当程序开始变大以后,有框架还是能好很多,省很多事情,让代码好看和高效很多的。
      程序共有三个循环:界面循环,数据产生循环,数据记录循环。三个循环在初始化阶段,所做的初始化工作都是获取消息通知器和队列。在所有的Obtain Notifier的name属性都是CMD,每个循环都会获取对名字为CMD的消息通知器的引用。对于队列也是一样的。注意一下,给Release Notifier的force destroy赋予了true,而Release Queue的则没有。这是由于这两个Release只是释放的对消息通知器或队列的引用,并没有销毁对应的消息通知器或队列,只有所有的引用都释放了之后,lv才会自行销毁对应的消息通知器或队列。在程序里,对数据产生循环和数据记录循环的控制是通过对消息通知器操作的错误来控制的,因此在界面循环后面的Release Notifier执行时需要将消息通知器销毁,这样就能控制另两个循环的停止;对于队列,则没有这个要求,也就不需要赋予true了。

LabVIEW的Framework(6):GUI程序框架实例_第1张图片

LabVIEW的Framework(6):GUI程序框架实例_第2张图片

LabVIEW的Framework(6):GUI程序框架实例_第3张图片
      其它需要注意的方面主要有:
      1、消息通知器传递的Enum,第一个元素是Stop。这是由于在消息通知器创建后,还没有送入任何通知的时候,Get Notifier Status获取的元素就是第一个元素。因此,第一个元素为Stop,防止在刚开始的时候,程序就跑飞了。
      2、在查看消息通知器里的消息的时候,使用的都是Get Notifier Status,原因有两个:一是消息通知器是两个循环共用的,不能由其中一个把消息取出;二是在两个循环进入产生数据或记录数据的工作状态后,都是需要查看消息来确定是否结束回到Idle状态,因此也不能把消息取出。
      3、我也说不出太多了,还是得在实践中慢慢体会其中的细微之处。我的肯定不是最好的,还需要自己在实践中多研究完善。

你可能感兴趣的:(LabVIEW的Framework(6):GUI程序框架实例)