2011年10月9日,第一稿
9.5 图形化语言设计模式之四——生产者队/消费者(数据)
生产者/消费者(事件)设计模式并不很常用,更多的生产者/消费者设计模式是应用与数据(采集、存储等)处理,也就是本节要介绍的生产者/消费者(数据)设计模式。
二者在构成形式上区别不大,依旧是While循环配合队列函数。所不同的是生产者/消费者(数据)在生产者循环中采用了Case结构取代了事件结构。
二者在构成形式上区别不大,依旧是While循环配合队列函数。所不同的是生产者/消费者(数据)在生产者循环中采用了Case结构取代了事件结构。
9.5.1 导入生产者/消费者(数据)模板
获得生产者/消费者(数据)的设计模式很简单,在LabVIEW的启动界面选择:
》基于模板的VI...或更多...
》新建
》基于模板
》框架
》设计模式
》生产者/消费者设计模式(数据)
参见下图。
》基于模板的VI...或更多...
》新建
》基于模板
》框架
》设计模式
》生产者/消费者设计模式(数据)
参见下图。
在初学LabVIEW时,所接触到的数据处理方式一般比较简单,所以不会使用到这个设计模式。随着学习的深入,应用复杂性增加,我们就会慢慢接触、使用到这个模板。同时也会渐渐发现这的确是一个非常好的设计模式。
9.5.2 生产者/消费者(数据)设计模式的图形化代码
在上图中鼠标双击生产者/消费者(数据)即可打开该设计模式的图形化代码,参见下图。
生产者/消费者(数据)设计模式采用了队列数据存储方式(FIFO)。队列的数据存储是开辟一个缓存区,依据数据先进先出的原则进行处理。新来的元素总是被加入队尾(即不允许"加塞"),每次离开的元素总是队列头上的(即不允许中途离队),当前"最老的"元素离队。这样就保证了数据传递过程中基本上不会发生数据丢失的现象。
这种处理方式特别适合数据采集处理。在许多网站我们都可以看到一些LabVIEW爱好者给出了不同形式下的应用模式。
下面我们来看看多个生产者及一个消费者的模式,参见下图。
这种处理方式特别适合数据采集处理。在许多网站我们都可以看到一些LabVIEW爱好者给出了不同形式下的应用模式。
下面我们来看看多个生产者及一个消费者的模式,参见下图。
来自NI资讯的另一个数据处理示例。对于一项在线信号处理应用,您可以使用三个独立的while循环和两个队列结构,实现其间的数据传递。在此应用情况下,一个循环将从一台仪器采集数据,一个循环将专门执行信号处理,而第三个循环将数据写入到另一台仪器。参见下图。