LabVIEW程序设计模式(五)—生产者/消费者模式(5)

2015-08-05 09:37:26   来源:vihome   

关键字: LabVIEW  程序设计模式

结合状态机模式、事件结构和动态调用技术,能够归纳出针对较复杂应用程序的通用设计模式。对常见的测试测量程序而言,主要由数据采集、数据分析、外围菜单项响应、报表生成、数据显示这五个部分组成。其中数据采集是相对独立和长时间运行的一个模块,可以与其它的模块同时运行。因此,在大多数持续采集的程序设计中需要将它单独作为一个模块运行。与此同时,子程序也需要一条数据通道发送一些反馈命令给主程序。于是可以构成如图 44所示的一个通讯回路。

LabVIEW程序设计模式(五)—生产者/消费者模式(5)_生产者/消费者模式扩展 - statemice - Change
44 通讯回路
LabVIEW提供了多种主程序与子程序之间的通讯方式,如队列、Reference、事件等。为了介绍这些方式的具体使用方法,将结合最常用的数据采集实例进行阐述。
应用7
本例以“计算机组件测试”为应用介绍消费者和生产者循环的具体使用方法和数据交互过程。例子并不是为了说明计算机组件测试的过程和方法,而是重在强调对该应用而言应该采用什么样的程序设计模式。因此,例子中使用了多种数据交互方式,这些交互方式的选择并不是唯一的,可以根据实际情况选择合适的数据交互方法。
假设计算机的整个测试过程由CPU、RAM、CDROM、Power….等等数项子测试项组成,程序需要充分考虑可扩展性要求,使得后期增加新的待测组件时对主程序的影响不大或者没有影响。测试过程应能够实现暂停和提前停止的功能,并且测试过程不受其它界面操作的影响。
根据以上的测试要求,可以把整个测试程序分为两个部分:控制部分和执行部分。其中前者是用户主界面,用来响应用户界面事件以及控制测试流程的执行;后者是执行程序,用来根据控制命令运行测试流程并且产生测试结果。系统的结构如图 45所示。

LabVIEW程序设计模式(五)—生产者/消费者模式(5)_生产者/消费者模式扩展 - statemice - Change
45 “计算机组件测试系统”结构
从上图可以看出,该应用与消费者和生产者模式是相符的,不同的是还涉及到消费者(执行部分)向生产者(控制部分)的数据传输。本例使用的是队列型的生产者和消费者模式,而反向的数据传输使用了“用户自定义事件”和“Reference”方法。当然,也可以使用队列等其它的方式。
程序的主界面如图 46所示,包括菜单栏,测试控制按钮和测试项列表3大部分。背面板如图 47所示,生产者部分采用状态机和事件结构相结合的设计模式,共包含5大类的状态。

LabVIEW程序设计模式(五)—生产者/消费者模式(5)_生产者/消费者模式扩展 - statemice - Change
46 PC Test前面板
LabVIEW程序设计模式(五)—生产者/消费者模式(5)_生产者/消费者模式扩展 - statemice - Change
47 PC Test背面板
在PInitialize状态中,主要实现前面板控件的初始化以及调用待测组件,如图 48所示。为了满足测试系统的可扩展性要求,将目前的测试组件统一集中放置到TestItems目录中。如果后续需要增加测试组件项,只需要编写相应的测试组件代码并且放置到TestItems目录中即可。

LabVIEW程序设计模式(五)—生产者/消费者模式(5)_生产者/消费者模式扩展 - statemice - Change
48 PInitialize状态
在DInitialize、Run、Pause和Stop状态中都使用到了PCTest_Execute_Controller.vi程序,该VI用来启动和控制消费者循环,如图 49所示。图中使用了新建队列函数,并且将该队列和主程序有关控件的Reference通过VI Server方法传递给了消费者循环。
[1] [2]
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

推荐阅读

编辑:什么鱼
本文引用地址: http://www.eeworld.com.cn/Test_and_measurement/2015/0805/article_12601.html
[发表评论]
[加入收藏]
[打印本页]
[关闭窗口]
[返回顶部]
[RSS订阅]
小广播
每日新闻
最热点击
本周热门资源推荐
EEWORLD独家
论坛精华
精选博文