labviw主/从设计模式和生产者/消费者设计模式.docxVIP

labviw主/从设计模式和生产者/消费者设计模式.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
labviw主/从设计模式和生产者/消费者设计模式

5.2 LabVIEW设计模式——主/从设计模式和生产者/消费者设计模式?????? 在上一节中曾经谈到过,NI LabVIEW 中提供了六种最基本的设计模式。本节首先介绍其中的两种: 主/从设计模式与生产者/消费者设计模式(Master/Slave design pattern and Producer/Consumer design pattern)。这是由于这两种设计模式在结构上极为相似(使用的内置函数不同),所以我们在这里将一起来讨论(基本结构参见图 5.2-1、图 5.2-2)。????????????????????????????????????????????????????????????? 图 5.2-1 主/从设计模式?????????????????????????????????????????????????????? 图 5.2-2 生产者/消费者设计模式?5.2.1 主/从设计模式(Master/Slave design pattern)??????? 与主/从设计模式的相关内置函数(Notifier_通知)参见下图所示。???????????? 图 5.2.1-1 主/从设计模式内置函数(通知)??????? 关于这些内置函数的定义和使用方法请参考LabVIEW Help文件,这里就不再进行讨论了。??????? 对于绝大多数LabVIEW的学习者来讲,仅仅依据这些主/从操作提供的内置函数(通知),即便是借助于帮助文件也很难理解和设计出正确的应用程序代码或基本架构。因为 这些内置函数的内部程序代码是不对外开放的、不公开的,所以我们也就很难理解的更准确或更全面。??????? 那么如何正确的使用它们呢??????? 通常有两个最简单、最直接的方法可以解决这个问题:一是,查看NI给出的设计模式或例程;二是,查看其它使用者所提供的实用例程。?????? 其实,这里也再次间接的告诉大家,更多查看和理解其它LabVIEW开好者所提供的实用例程是学习LabVIEW的最好方法之一。??????? 通过图 5.2-1,就可以初略地领会到NI 基于数据流的图形化代码主/从设计模式的表达形式或架构。??????? 从图 5.2-1中,可以看到主/从设计模式的基本构成是:包括了两个While循环(上面为主循环、下面的为从循环)和若干个“通知”内置函数(Notifier)构成。主 循环中的Case结构用来确定是否向从循环发出通知。??????? 该设计模式支持图形化代码的多种数据类型的数据输入(图 5.2-1中的数据类型为:字符串);并且用一个Stop按键来控制这两个While循环的停止。??????? 如果用“高亮执行”方式来查看它的数据流运行状态时,我们会发现:当主循环中的Case结构的条件输入端为:F时,主循环不会发出通知,从循环也不执行任何操作; 当主循环中的Case结构的条件输入端为:T时,主循环发出通知,从循环执行相应的操作。当我们按下“Stop”键时,主循环停止并利用错误簇(表现为:出现错误)通知 从循环也停止。???????? 主/从设计模式工作时,数据(元素)传递是发生在两个While之间,依据While循环的数据流工作原理,我们的确很难理解数据是如何在两个While循环之间传递的 。这使得这种结构的两个While循环之间传递数据的关系看起来有点象全局变量(或本地变量)。??????? 其实,它与全局变量功能上是相近的,但还是有些区别。其中最主要区别在于:负责产生信息的主循环必须保持循环查询数据是否发生变化。在数据没有发生改变的时候,从循环结 构则完全停止执行,只有当新数据可用时才重新启动(通知)。这就会使计算机减少浪费在无止境的轮询中的时间。另外,全局变量破坏了数据流的关系,而这里则完全保证了数据流 的关系。??????? 主/从设计模式主要用来解决两个或多于两个的同时发生的并且拥有不同运行速率的线程的通信应用中或者在运行于同一台机器的两个VI之间通信的工具。这种方式一般用来同步 两个独立的进程,所以它的这些内置函数是分类在函数选板的同步模版中。??????? 其实,在数据采集和处理中,更需要这种主/从构架的应用。比如,在连续数据采集和分析、处理中,我们可能会将采集、分析、处理放在一个While循环内。那么While 循环运行一次的时间就是采集、分析、处理这三部分运行时间之和。如果任务中需要快速采集和实时处理,显然这种在采集、分析、处理同放在一个While循环中的方式很不好, 很可能导致数据采集的不连续性(数据时间上出现间断点),也就是采集完后将等待分析、处理完成后才能再次进行采集。??????? 如果真的不希望这种情况发生,那就可以通过采用主/从设计模式来解决这样类似的问题。比如,将数据采集放到

文档评论(0)

qi1920809 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档