- 1、本文档共142页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
精讲LabVIEW设计模式 LabVIEW 设计模式 LabVIEW 定时结构优化LabVIEW程序内存管理LabVIEW与多线程调用动态链接库什么是设计模式?一种LabVIEW程序模板与架构 软件实践中通用的程序架构,其本质是对很多十分类似的问题进行总结归纳的基础上提炼出的一些具有代表性的软件开发规范具有灵活的配置功能被广泛使用使用设计模式的益处简化整个开发过程更容易理解程序代码代码可重用可靠性被使用多年,被证明其“可用并可靠”大量技术资源与例程使用设计模式注意事项1、不是一成不变的定律,既要知道有哪些设计模式,还要知道每种模式解决实际应用中的哪些问题,是如何解决的,效果如何?2、文本式编程语言中广泛使用的设计模式在图形化数据流编程中的应用问题。注意!有些时候你没有必要选用最复杂的设计模式不要忘记最常见的设计模式——数据流!LabVIEW设计模式通用型:状态机模式、 消息队列模式、 用户界面事件模式专用型:主从线程模式、 生产/消费模式、 后台服务模式、 应用程序启动模式、 代理模式基本工具循环结构移位寄存器分支结构枚举型常量事件结构状态机模式“我需要执行一系列的事件步骤,但是步骤顺序可通过编程决定的。”自动贩卖机模型InitializeNo inputWaitNickel DepositedChange RequestedQuarter DepositedDime DepositedTotal 50Total 50Total 50QuarterChangeNickelDimeTotal = 50Total = 50Total = 50Total 50VendTotal = 50Exit基本三要素:状态、事件、动作背景静态顺序结构动态结构:允许不同的状态,按通过编程决定的顺序进行执行状态机结构对于一个最简单的状态机结构而言,它是可以用顺序结构代替的;而对于相对复杂的状态机结构而言,却可以作为测试流程的组织者和管理者。在LabVIEW下实现状态机结构While循环+Case结构每一Case即为一个状态当前状态中需有决定下一状态的判定代码使用枚举常量通过移位寄存器传递至下一状态工作流程切换代码根据执行步骤中的结果来决定下一状态Case结构对每一状态都配备一个分支FIRST STATE 执行步骤移位寄存器用于传递状态 切换代码下一状态初始状态枚举常量枚举常量 枚举类型是一种允许程序员自定义元素的数据类型,它可以显示数值对应的具体含义,帮助程序员理解程序中使用的变量值。 一个自定义的枚举类型对应一个状态机中的状态集合枚举常量举例 控件选板“Modern?”1、枚举控件、指示、常量2、默认U163、修改 Edit Items4、隐式与显式类型转换顺序型状态机模式DEMO1数据传递方式改进的顺序型状态机模式DEMO21、去掉i 2、添加一个移位寄存器测试流程型状态机DEMO31、解决顺序型状态机不便阅读和修改的问题,采用枚举型常量。2、采用自定义型控件,方便修改。over消息队列模式“我需要执行一系列的事件步骤,但是步骤顺序可通过编程决定的。”步骤是由用户界面事件决定的,如某个应用程序共要处理4个状态,分别是A,B,C和D,前面板有3个按钮分别控制3种运行时的状态序列ABCD、DCAB和BDCA。引入消息队列模式,通过建立队列缓冲区来解决这个问题,这种模式也称为“队列型状态机模式”。消息处理过程建立消息队列消息源加入消息探测消息NoEXIT?删除消息Yes接收消息执行代码销毁消息队列队列建立方式队列函数和数组队列函数最常用的4个函数数组1、数组函数2、配合移位寄存器3、无需手动销毁队列空间数组方式DEMO队列函数方式DEMO队列函数与数组的不同1、消息传递方式不同 移位寄存器 FIFO2、释放消息队列的方式不同用户界面事件模式“我需要轮询用户的操作,但是这样会降低我程序的运行速度,并且有时我还检测不到……”LabVIEW中基于事件驱动的编程LabVIEW事件示例 按下鼠标 键盘按键 前面板的用户交互LabVIEW 事件结构什么是事件结构?带有多个子框图的结构节点,就像条件结构事件结构是如何工作的?当面板上事件发生时才被唤醒自动执行相应事件框图内的事件代码当处理完成相应事件后便结束,并不一直循环等待为什么要使用事件结构 ?用更简单的事件处理替代原来的查询循环最小化 CPU 的使用不会遗漏用户界面交互事件可检测更多的交互事件编程生成您自己的事件用户界面事件的两种类型通知事件和过滤事件事件源:用户界面事件用户自定义事件5个函数用户自定义事件DEMO事件注册静态事件注册:只有用户界面事件 选择事件源(程序、VI或控件)、特定事件、编辑 分支处理事件数据。Vi运行时自动注册。动态事件注册:何时产生何种事件静态事件注册de
文档评论(0)