精讲LabVIEW设计模式.ppt

上传人:b****2 文档编号:2122500 上传时间:2022-10-27 格式:PPT 页数:141 大小:4MB
下载 相关 举报
精讲LabVIEW设计模式.ppt_第1页
第1页 / 共141页
精讲LabVIEW设计模式.ppt_第2页
第2页 / 共141页
精讲LabVIEW设计模式.ppt_第3页
第3页 / 共141页
精讲LabVIEW设计模式.ppt_第4页
第4页 / 共141页
精讲LabVIEW设计模式.ppt_第5页
第5页 / 共141页
点击查看更多>>
下载资源
资源描述

精讲LabVIEW设计模式.ppt

《精讲LabVIEW设计模式.ppt》由会员分享,可在线阅读,更多相关《精讲LabVIEW设计模式.ppt(141页珍藏版)》请在冰豆网上搜索。

精讲LabVIEW设计模式.ppt

精讲LabVIEW设计模式LabVIEW设计模式LabVIEW定时结构优化LabVIEW程序内存管理调用动态链接库LabVIEW与多线程什么是设计模式?

什么是设计模式?

一种LabVIEW程序模板与架构软件实践中通用的程序架构,其本质是对很多十分类似的问题进行总结归纳的基础上提炼出的一些具有代表性的软件开发规范具有灵活的配置功能被广泛使用使用设计模式的益处使用设计模式的益处简化整个开发过程更容易理解程序代码代码可重用可靠性被使用多年,被证明其“可用并可靠”大量技术资源与例程使用设计模式注意事项使用设计模式注意事项1、不是一成不变的定律,既要知道有哪些设计模式,还要知道每种模式解决实际应用中的哪些问题,是如何解决的,效果如何?

2、文本式编程语言中广泛使用的设计模式在图形化数据流编程中的应用问题。

注意!

注意!

有些时候你没有必要选用最复杂的设计模式不要忘记最常见的设计模式数据流!

数据流!

通用型通用型:

状态机模式、消息队列模式、用户界面事件模式专用型:

专用型:

主从线程模式、生产/消费模式、后台服务模式、应用程序启动模式、代理模式LabVIEW设计模式设计模式基本工具基本工具循环结构移位寄存器分支结构枚举型常量事件结构状态机模式状态机模式“我需要执行一系列的事件步骤,但是步骤顺序我需要执行一系列的事件步骤,但是步骤顺序可通过编程决定的。

可通过编程决定的。

”自动贩卖机模型自动贩卖机模型InitializeWaitChangeQuarterDimeNickelExitVendNoinputQuarterDepositedTotal=50ChangeRequestedDimeDepositedNickelDepositedTotal50Total=50Total=50Total50Total=50基本三要素:

基本三要素:

状态、事件、动作状态、事件、动作背景背景动态结构:

允许不同的状态,按通过编程决定的顺序进动态结构:

允许不同的状态,按通过编程决定的顺序进行执行行执行静静态顺序序结构构状态机结构状态机结构对于一个最简单的状态机结构而言,它是可以用顺序结构代替的;而对于相对复杂的状态机结构而言,却可以作为测试流程的组织者和管理者。

在在LabVIEW下实现状态机结构下实现状态机结构While循环+Case结构每一Case即为一个状态当前状态中需有决定下一状态的判定代码使用枚举常量枚举常量通过移位寄存器传递至下一状态切切换代代码工作流程工作流程初始状初始状态FIRSTSTATE下一状下一状态执行步行步骤移位寄存器用于传递状态Case结构对每一状态都配备一个分支切换代码根据执行步骤中的结果来决定下一状态枚举常量枚举常量一个自定义的枚举类型对应一个状一个自定义的枚举类型对应一个状态机中的状态集合态机中的状态集合枚举常量枚举常量枚举类型是一种允许程序员自定义枚举类型是一种允许程序员自定义元素的数据类型,它可以显示数值对应元素的数据类型,它可以显示数值对应的具体含义,帮助程序员理解程序中使的具体含义,帮助程序员理解程序中使用的变量值。

用的变量值。

枚举常量举例枚举常量举例控件选板控件选板“Modern”1、枚举控件、指示、常量、枚举控件、指示、常量2、默认、默认U163、修改、修改EditItems4、隐式与显式类型转换、隐式与显式类型转换DEMO1顺序型状态机模式顺序型状态机模式数据传数据传递方式递方式DEMO2改进的顺序型状态机模式改进的顺序型状态机模式1、去掉、去掉i2、添加一个移位寄存器、添加一个移位寄存器DEMO3测试流程型状态机测试流程型状态机1、解决顺序型状态机不便阅读和修、解决顺序型状态机不便阅读和修改的问题,采用枚举型常量。

改的问题,采用枚举型常量。

2、采用自定义型控件,方便修改。

、采用自定义型控件,方便修改。

over消息队列模式消息队列模式“我需要执行一系列的事件步骤,但是步骤顺序可通过我需要执行一系列的事件步骤,但是步骤顺序可通过编程决定的。

编程决定的。

”步骤是由用户界面事件决定的,如某个应用程序共要处步骤是由用户界面事件决定的,如某个应用程序共要处理理4个状态,分别是个状态,分别是A,B,C和和D,前面板有,前面板有3个按钮分别个按钮分别控制控制3种运行时的状态序列种运行时的状态序列ABCD、DCAB和和BDCA。

引入消息队列模式,通过建立队列缓冲区来解决这个问引入消息队列模式,通过建立队列缓冲区来解决这个问题,这种模式也称为题,这种模式也称为“队列型状态机模式队列型状态机模式”。

消息处理过程消息处理过程建立消息队列加入消息探测消息EXIT?

删除消息接收消息执行代码销毁消息队列消息源YesNo队列建立方式队列建立方式队列函数和数组队列函数和数组队列函数队列函数最常用的最常用的4个函数个函数数组数组1、数组函数、数组函数2、配合移位寄存器、配合移位寄存器3、无需手动销毁队列空间、无需手动销毁队列空间数组方式数组方式DEMO队列函数方式队列函数方式DEMO队列函数与数组的不同队列函数与数组的不同1、消息传递方式不同、消息传递方式不同移位寄存器移位寄存器&FIFO2、释放消息队列的方式不同、释放消息队列的方式不同用户界面事件模式用户界面事件模式“我需要轮询用户的操作,但是这样会降低我程我需要轮询用户的操作,但是这样会降低我程序的运行速度,并且有时我还检测不到序的运行速度,并且有时我还检测不到”LabVIEW中基于事件驱动的编程中基于事件驱动的编程LabVIEW事件示例事件示例按下鼠标键盘按键前面板的用户交互LabVIEW事件结构事件结构什么是事件结构?

带有多个子框图的结构节点,就像条件结构条件结构事件结构是如何工作的?

当面板上事件发生时才被唤醒自动执行相应事件框图内的事件代码当处理完成相应事件后便结束,并不一直循环等待为什么要使用事件为什么要使用事件结构结构?

用更简单的事件处理替代原来的查询循环最小化CPU的使用不会遗漏用户界面交互事件可检测更多的交互事件编程生成您自己的事件编程生成您自己的事件用户界面事件的两种类型用户界面事件的两种类型通知事件通知事件和和过滤事件过滤事件事件源:

用户界面事件事件源:

用户界面事件用户自定义事件用户自定义事件5个函数个函数用户自定义事件用户自定义事件DEMO事件注册事件注册静态事件注册:

只有用户界面事件静态事件注册:

只有用户界面事件选择事件源(程序、选择事件源(程序、VI或控件)、特定事件、编辑或控件)、特定事件、编辑分支处理事件数据。

分支处理事件数据。

Vi运行时自动注册。

运行时自动注册。

动态事件注册:

何时产生何种事件动态事件注册:

何时产生何种事件静态事件注册静态事件注册demo动态事件注册动态事件注册4个步骤个步骤1、获取要处理事件对象的、获取要处理事件对象的VI服务器引用;服务器引用;2、将、将VI服务器引用连接至服务器引用连接至“注册事件注册事件”函数;函数;3、将事件结构放在、将事件结构放在While循环中,等待处理循环中,等待处理对象事件直到终止条件出现;对象事件直到终止条件出现;4、通过取消注册时间函数停止事件发生。

、通过取消注册时间函数停止事件发生。

动态事件注册动态事件注册demo最值器最值器用户界面事件用户界面事件demo一个动态一个动态+5个静态个静态状态机状态机用户界面事件混合用户界面事件混合demo初始化时不初始化时不再需要用户再需要用户自定义事件自定义事件其他模式其他模式“我希望同一时刻能够处理多个消息事件,而不我希望同一时刻能够处理多个消息事件,而不是下一个消息代码必须等待上一次响应完成后才是下一个消息代码必须等待上一次响应完成后才能执行能执行”“我不希望消息排队,等待很烦的,有时采集数据和我不希望消息排队,等待很烦的,有时采集数据和记录数据应该同时进行的记录数据应该同时进行的”。

主从线程模式主从线程模式通常应用于具有多个通常应用于具有多个同时发生的并且拥有同时发生的并且拥有不同运行速率的线程不同运行速率的线程的程序中。

比如采集的程序中。

比如采集电压同时写入磁盘,电压同时写入磁盘,采集速率采集速率1KHz,记录,记录则每则每5秒一次。

秒一次。

1、数据通信采用全局变量、局域变量或共享变量;、数据通信采用全局变量、局域变量或共享变量;2、Stop为为Switch模式模式3、有时会用到事件发生模块、有时会用到事件发生模块Occurrence生产者生产者/消费者消费者“我需要可以同时间执行的两个过程,并且需保我需要可以同时间执行的两个过程,并且需保证它们不会互相影响执行速度。

证它们不会互相影响执行速度。

”生产者生产者/消费者消费者全局变量、局域变量或共享变量的每次复制都是原始数全局变量、局域变量或共享变量的每次复制都是原始数据的一个副本,占据了大量的空间。

实际上只需要使用据的一个副本,占据了大量的空间。

实际上只需要使用一部分缓冲区作为数据存储的中间部分,这需要借助队一部分缓冲区作为数据存储的中间部分,这需要借助队列技术。

列技术。

存储单元存储单元数据流入数据流入数据流出数据流出生产者生产者/消费者具体做法消费者具体做法最简单模式最简单模式在在LabVIEW下实现生产者下实现生产者/消费者消费者无数据相关的多个循环主/从关系在循环间实现通讯与同步工作流程工作流程主循环负责通知各个从循环是否执行允许循环间异步执行数据的非相关性实现多线程程序过程分解实现循环间的数据通讯实现循环间的数据通讯变量通知器队列信号量集合队列队列在队列中添加元素在队列中添加元素从队列中释放元素从队列中释放元素Referencetoexistingqueueinmemory选择队列中元素的数据类型出列操作需要等待数据进入或者超时情况生产者生产者/消费者循环消费者循环后台服务模式后台服务模式问:

问:

“我需要程序在后台运行,不要前面板,不要交互我需要程序在后台运行,不要前面板,不要交互”答:

答:

“采用采用VI属性和方法接口,足以使你控制后台运行的属性和方法接口,足以使你控制后台运行的VI”例子:

一个网络服务监听程序,程序只需要接收与客户端例子:

一个网络服务监听程序,程序只需要接收与客户端Sockets的的连接,实现三次握手,连接完成后将引用交给前端应用程序处理,连接,实现三次握手,连接完成后将引用交给前端应用程序处理,同时继续监听。

同时继续监听。

后台服务模式后台服务模式后台服务模式后台服务模式应用程序启动模式应用程序启动模式“我想设计一个启动画面,同时显示应用程序加载的进度,加载完我想设计一个启动画面,同时显示应用程序加载的进度,加载完毕后退出启动画面,运行主程序毕后退出启动画面,运行主程序”应用程序启动模式应用程序启动模式1、SubVI目录目录2、启动应用程序、启动应用程序.vi3、主程序、主程序“网络实验系统网络实验系统.vi”代理模式代理模式“我希望顶层我希望顶层VI(主(主VI)需要某个子)需要某个子VI时,才将其载入内存时,才将其载入内存”“可以在应用程序中引入迟载入技术可以在应用程序中引入迟载入技术”代理模式代理模式总结总结设计模式简化LabVIEW开发过程被广泛使用及证明其可用常用的LabVIEW设计模式数据流事件驱动状态机结构生产者/消费者而功能型全局变量(functionalglobalvariable)是为了避免竞争机制而实现的一种非重入型子vi定时结构定时结构精确的定时while循环精确的定时顺序结构多个时钟频率的定时反馈,动态定时特性多优先级设置examplesgeneraltimedloop.llb定时顺序结构定时顺序结构类似添加内置定时功能的顺序结构定时循环定时循环1、优先级:

相对同一个程序框图中的多个定时循环而言,优先级数大的循环优先执行。

每一个定时循环都有自己的线程,这里的优先级即线程优先级。

2、循环名称,对于可重入子VI中包含定时循环,且该子VI的多个实例出现在同一个程序框图中,可以将循环名称作为子VI的输入端子。

3、Deadline:

用于指定完成一个循环的时间限定,如未在指定的时间内完成,则左端数据

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1