

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5.2 LabVIEW设计模式一一主/从设计模式和生产者/消 费者设计模在上一节中曾经谈到过,N1 LabVIEW中提供了六 种最基本的设计模式。本节首先介绍其中的两种:主/从设计模式与生产者/消费者设计模式(Master/Slave designpattern and Producer/Consumer design pattern)。这是由 于这两 种设计模式在结构上极为相似(使用的内置函数不同),所以我们在这里将一起来讨论(基本结构参见图5.2-1、图5.2-2 ) oMitt*- z iwhRiaTi 1 i订“4邛.逊K2- (T-|To*;址严石97图5. 2-1主/从设计模式Pr
2、oduOM/ConwrTZ Deii jr Pattern (Datdl PfoducerConbunerDt:d 4.vi Block. Diagram TrcCcxrE2D 0图5. 2-2生产者/消费者设计模式5. 2 1主/从设计模式(Master/Slave design pattern )3IIT|z.jrf11f rr:石二彳Elart 料rjEFTf * I WF Zot-iair r J ra叫PrDE订Tng Oa*fCcmrnviiiEiTi&qonriKEiiiMITyConftFDD: pn H SimLilstiaxAddend是不对外开放勺、不公开勺,所以
3、我们也就很难理解勺更准确或更全 面。那么如何正确勺使用它们呢?通常有两个最简单、最直接勺方法可以解决这个问题:一是,查看NI给出勺设计模式或例程;二 是,查看其它使用者所提供勺实用例程。其实,这里也再次间接勺告诉大家,更多查看和理解其它LabVIEW开好者所提供的实用例程是学习LabVIEW勺最好方 法之一。通过图5.2-1,就可以初略地领会到NI基于数据流的图形化代码主/从设计模式的表达形式或架构。从图5. 2-1中,可以看到主/从设计模式的基本构成是:包括了两个WMle循环(上面为主循环、下面的为从循环)和若 干个“通知”内置函数(Notifier)构成。主 循环 中的Case结构 用来确
4、定是否向从循环发出通知。该设计模式支持图形化代码的多种数据类型的数据输入(图5. 2-1中的数据类型为:字符串);并且用一个Stop按键来控 制这两个Wh订e循环的停止。如果用“高亮执行”方式来查看它的数据流运行状 态时,我们会发现:当主循环中的Case结构的条件输入端为:F时,主 循环不会发出通知,从循环也不执行任何操作;当主 循环中的Case结 构的条件输入端为:T时,主循环发岀通知,从循环执行相应的操作。当我们按下“Stop ”键时,主循环停 止并利用错误簇(表现为:岀现 错误)通知 从循环也停止。主/从设计模式工作时,数据(元素)传递是发 生在两个WMle之间,依据Wh订e循环的数据流
5、工作原理,我 们的确很难理 解数据是如何在两个Wh订e循环之间传递的。这使得这种结构的两个Wh订e循环之间传递数据的关系看起来有 点象全局变量(或本地变 量)。其实,它与全局变量功能上是相近的,但还是有些区别。其中最主要区别在于:负责产生信息的主循环必须保持 循环查询 数据是否发生变化。在数据没有发生改变的时候,从循环结构则完全 停止执行,只有当新数据可用时才重新启动(通知)。这就会使计算机 减少浪费在无止境的轮询中的时间。另外,全局变量破坏了数据流的关 系,而这里则完全保证了数 据流的关系。主/从设计模式主要用来解决两个或多于两个的同时发生的并且拥有不同运行速率的线程的通信应用中或者在运行于
6、同一台机 器的两个VI之间通信的工具。这种方式一般用来同步两个独立的进 程,所以它的这些内置函数是分类在函数选板的同步模版中。其实,在数据采集和处理中,更需要这种主/从构架的应用。比如,在连续数据釆集和分析、处理中,我们可能会将采集、分析、处理放在一个WMle循环内。那么WMle循 环运行 一次的时间就是采集、分析、处理这三部分运行时间之 和。如果任务中 需要快速采集和实时处理,显然这种在采集、分析、处理同放在一个Wh订e循环中的方式很不好,很可能导致数据采集的不连续性(数据 时间上出现间断点),也就是采集完后将等待分析、处理完成后才能 再次进行采集。如果真的不希望这种情况发生,那就可以通过采
7、用主/ 从设计模式来解决这样类似的问题。比如,将数据釆集放到主循环中, 分析和处理放置到从循环中。由于我们不是LabVIEW内置函数的设计者,所以不清楚主/从设计模式的数据存储方式,所以我们只能认定:这种工作方 式当SendNotification有效时,元素被存储,当Wait on Notification有效时,元素被读取,从而实现主/从 结构间的数据传 递。这样做就会高枕无忧了吗?其实不然!这种构架的缺点是:如果取走元素的速度慢,而发送元素的速度快,則会发生元素漏掉的情形。为了验证这样的说法,我们做一个简单的验证程序。例5. 2. 1-1主从结构数据传递试验图5 2.1-2是该程序的程序
8、框图*Th ( ? .*h叩沖LLBJ忡利別审bTnr和 2 也y. i E-Irfiur .dhiilJM 4 -M利hu i R:审斛TftvifiirHTIch”图521-2主/从模式数据传输试验程序框图主循环产生一个随机数并发送到从循环,在每个循环中各放置一个Chat图形显示器来观察随机数发送和接收的情况。主/从循环各放置一个定时器,选择不同的定时时间来验 证数据传输的正确性。tfiuu. &n Nsl! rl c Bfl *Ti IZJ1、主循环定时:150ms从循环定时:150ms521-3主循环、从循环定时均为150ms从图5. 2.1 -3可以看岀数据传递是准确可靠的2
9、、主循环定时:200ms从循环定时:150ms3、主循环定时:从循环定时:200ms循环定时200ms从循环定时为150msWnyk76 代 XSL njDGPraminingAddonsFa worit&sUstr Libra只是使用的内置函数不同。同样我们也不介绍内置函数的定义和使用方式。同时,生产者/消费者设计模式的基本工作原理 也就不多介绍了面主要介绍它们之间的不同之处。它们之间最大的不同就是数据存储和传输方式的不同。生产者/消费者设计模式采用了队列的数据存储方式(FIFO)0队列的数据存储是开辟一个缓存区,依据先进先出的原 则进行的。新来的元素总是被加入队尾(即不允许加塞),
10、 每次离开的元素总是队列头上的(即不允许中途离队),当前最老 的元素离队。这样就保证了数据传递过程中基本上不会发生数据 丢失的现象。为了验证这样的说法,我们还是同样做一个简单的验证程序。例5. 2. 2-1生产者/消费者结构数据传递试验图5. 2. 2-2是该程序的程序框图产者/消费者模式数据传输试验生产者循环产生一个随机数并发送到消费者循环,在每个循环中各放置一个Chat图形显示器来观察随机数发送和 接收的情况。生产者/消费者循环各放置一个定时器,选择不同的定时时间来验证 数据传输的正确性。1生产者循环定时:150ms消费者循环定时:150ms讯習讯習ir LLruui-TiilK.k.J,
11、r./ i ?r I图522-3生产者循环、消费者循环定时均为150ms从图5. 2. 2-3可以看岀数据传递是准确可靠的2、生产者循环定时:200ms消费者循环定时:150ms& & 5 5 3 3 J J a.fl.0a.fl.0 a a a aPMQLLPMQLLOP3OP3QEQErm vSNHI0WW4rr Cl- irt 2L叮a缶Timi. e图522-4生产者循环定时200ms消费者循环定时为150ms从图5. 2. 2-4可以看出数据传递也是准确可靠的。3、生产者循环定时:150ms消费者循环定时:200ms主循环定时150ms从循环定时为200ms从图5.
12、2. 2-5可以看出数据传递也没有出现数据 丢失的现象。实际上,由于数据传递被强行停止,所以后面的数据没有被全 部完全传递出来。解决这个问题的方法是在程序 设计中添加一些处理 程 序,这部分内容可参考:LabVIEW网络 讲坛系列第三季运筹帷幄一一生产者图5. 2. 2-5/消费者循环。还是那个问题,从循环的停止是来自于主循环提供的错误信息,从循环内如果发生错误如何报错?下面给出一个使用Mac版LabVIEW编写的DAQmxBas的实例(仅用于Mac数据采集应用)。图522-6 Mac电脑用于数据采集的生产者/消费者例程(DAQmxBaSe.CiBvta KM F. #:.i拿nrii. fcr p* STM?*:S .Zfit?irv ihi A X.门RE 山JlIT1. 亠亠ML 0 i*uri kJ LX- iiv 1J Uu*fti Fjaad - IXhp BL *ur c tir-a jfihv El1 XXBih drill 1FGTIrI勺曲Ib4 KqaMfllt-fli T X If g ! taitSaSQDnun
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西警官职业学院《影视艺术欣赏》2023-2024学年第二学期期末试卷
- 通辽职业学院《文化创意产业概论》2023-2024学年第二学期期末试卷
- 江西现代职业技术学院《动物遗传学实验》2023-2024学年第二学期期末试卷
- 昆明文理学院《书籍装帧设计》2023-2024学年第二学期期末试卷
- 建筑公司整体转让合同
- 农民公寓买卖合同
- 临时工聘用炊事员合同书
- 品牌形象代言合同
- 指定用途借款合同
- 实验室设备采购合同
- 2025年高考作文备考训练:知足与进取(附思路指引、立意参考、结构建议、4篇范文示例)
- 2025年第33批 欧盟REACH SVHC高度关注物质清单247项
- 2025年山东省东营市广饶县一中中考一模英语试题(原卷版+解析版)
- 浙江省宁波市镇海中学2024-2025学年高考二模英语试题试卷含解析
- 高校班干部培训
- 房 产 税教学课件
- 地面推广协议
- 雷雨剧本文件完整版电子书下载
- 采样员笔试题库及答案
- 2025年中国能源建设集团湖南省电力设计院限公司校园招聘自考难、易点模拟试卷(共500题附带答案详解)
- 少儿海洋知识科普
评论
0/150
提交评论