已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LabVIEW程序设计模式(四)状态机和事件结构的结合LabVIEW程序设计 2009-05-04 14:25:19 阅读497 评论0 字号:大中小订阅 上两节分别解决了基本状态机的第(15)个问题,但是是否具备一种模式能够综合队列型状态机模式和用户界面事件型模式的优点呢?这样可以同时避免基本状态机的第(15)个问题。答案是肯定的,本节将介绍如何将状态机与事件结构结合起来形成一种新的、稳定的模式。状态机模式的基本构成元素是while循环和case结构,而事件结构模式的基本构成元素是while循环和event结构,因此新的模式应该由while循环、case结构和event结构组成。而while循环的目的是为了保证程序的持续运行,因此必须在最外层,这样就只剩下了图 20所示的两种组合方式。在第一种方式中,每次循环的运行需要经过一个事件结构才能够实现case中各个分支的运行,那么到底需要多少个分支呢?一般而言不同的事件都会有不同的事件处理函数(这些函数可以在case结构中共用),显示这是无法满足要求的,它从本质上而言仍然是一种事件结构。在第二种方式中,程序的主体是一个状态机结构,不同的是在某一个状态分子中有一个事件结构。我们可以回忆状态机模式中的“空闲Idle”状态,这正是长时间占用CPU资源的源头,如果在Idle中加入一个事件结构后就有效地规避了这个问题。图 20 三种结构的组合方式因此图 20中的第二种结构综合了状态机和事件结构的优点,有效地克服了基本状态机的第(15)个问题。此外,在【应用2_自动贩卖机】例程中,按钮1USD、2USD和5USD的作用是相同的,唯一不同的是它们的代表的币值不同。如果我们希望系统共用“币值相加”这个功能,即当这三个按钮任何一个被按下后都调用同一个函数(该函数的功能是将系统中原来的货币值与新加入的币值相加得到新的值)。这样,需要有一种途径把1USD、2USD和5USD代表的币值作为参数传递给函数。图 21所示为带参数的状态机结构,在消息队列的状态机模式中,加入了一个变体型的变量作为状态传递的参数。实际上,可以把红色的部分做成子vi,不仅节省了背面板空间而且能够进行错误处理。程序中应该设置一个专门的错误处理状态,当任何一个状态运行后如果发生错误将直接转到错误处理状态。当然,也可以在图 21的基础上做一些改进和变形,假定参数的数据类型为string型,这样就把Data参数和State合并起来,中间使用特殊符号(如)隔开。图 21 带参数的状态机结构【应用4】本节的例程将使用Multicolumn Listbox控件处理2维数组排序问题,前面板如图 22所示。该Listbox用于显示系统中的各种采集数据值,分为5列。程序的功能是当单击Listbox的列头时,对数据以该列的升序/降序进行排序。单击Stop按钮或按钮则停止程序运行。图 22 2D数组排序_前面板系统使用状态机和事件结构相结合的模式,如图 23所示。程序分为8个状态,共有4类。各个状态的功能与消息队列型的状态机模式类似,程序加入了错误处理部分。在背面板的循环中共享同一个“错误簇”结构的移位寄存器,当存在错误时程序将暂时停止运行其它的状态而优先进入错误状态(这里是Error分支)。图 23 2D数组排序_背面板在Idle状态中,事件结构可以防止CPU资源的长时间占用,也可以响应各种前面板事件,如图 24所示。图 24 状态机中的事件结构本例中引入了4个变量以供不同的状态分支调用,如图 25所示。其中的意义如下所述。(1) Index:当前排序的列号,表示Listbox以哪一列为依据进行排序。(2) ASC:表示当前排序的方式,true表示升序,而false表示降序。(3) Column Header:表示Listbox的列头数据。(4) Data:表示Listbox的内容数据。图 25 数据变量在图 26中,事件结构处理的是Listbox的事件,此时只需要对内部的变量赋值即可,并且当该单击是有效单击时进入“DSort”状态进行排序操作。图 26 排序事件在图 27所示的DSort状态中,根据内部变量的值对Listbox赋值并更新列头的显示。图 27 DSort状态图 27调用了2D数组的排序函数,该函数的实现过程如图 28所示。LabVIEW并没有提供2D数组的排序方式,只提供了1D数组的排序函数。本例充分利用了LabVIEW提供的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年西南政法考研真题及答案
- 合作项目经营合同范本
- 厂房管理协议合同范本
- 医疗服务外包合同范本
- 医疗运营管理合同范本
- 化工产品运输合同范本
- 品牌黄金买卖合同范本
- 包地工程合同范本模板
- 医院食品安全合同范本
- 哪个网可以查合同范本
- 北京市海淀区2023-2024学年七年级上学期数学期中考试试卷(含答案)
- 2016年上外杯-初赛英语试题(原卷版)
- 道路工程测量实习报告
- PKPM系列之-PKPT项目管理软件使用说明
- GB/T 37546-2019无人值守变电站监控系统技术规范
- GB/T 32381-2015全地形车辆轮胎
- GB/T 231.2-2012金属材料布氏硬度试验第2部分:硬度计的检验与校准
- GB/T 17505-2016钢及钢产品交货一般技术要求
- 建筑工地电动车辆安全检查验收表
- 道路交通标志和-标线课件
- 医院医疗器械询价采购相关表格(套)
评论
0/150
提交评论