LabVIEW程序设计模式(四)—状态机和事件结构的结合.doc
《LabVIEW程序设计模式(四)—状态机和事件结构的结合.doc》由会员分享,可在线阅读,更多相关《LabVIEW程序设计模式(四)—状态机和事件结构的结合.doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LabVIEW程序设计模式(四)状态机和事件结构的结合LabVIEW程序设计 2009-05-04 14:25:19 阅读497 评论0 字号:大中小订阅 上两节分别解决了基本状态机的第(15)个问题,但是是否具备一种模式能够综合队列型状态机模式和用户界面事件型模式的优点呢?这样可以同时避免基本状态机的第(15)个问题。答案是肯定的,本节将介绍如何将状态机与事件结构结合起来形成一种新的、稳定的模式。状态机模式的基本构成元素是while循环和case结构,而事件结构模式的基本构成元素是while循环和event结构,因此新的模式应该由while循环、case结构和event结构组成。而while
2、循环的目的是为了保证程序的持续运行,因此必须在最外层,这样就只剩下了图 20所示的两种组合方式。在第一种方式中,每次循环的运行需要经过一个事件结构才能够实现case中各个分支的运行,那么到底需要多少个分支呢?一般而言不同的事件都会有不同的事件处理函数(这些函数可以在case结构中共用),显示这是无法满足要求的,它从本质上而言仍然是一种事件结构。在第二种方式中,程序的主体是一个状态机结构,不同的是在某一个状态分子中有一个事件结构。我们可以回忆状态机模式中的“空闲Idle”状态,这正是长时间占用CPU资源的源头,如果在Idle中加入一个事件结构后就有效地规避了这个问题。图 20 三种结构的组合方式
3、因此图 20中的第二种结构综合了状态机和事件结构的优点,有效地克服了基本状态机的第(15)个问题。此外,在【应用2_自动贩卖机】例程中,按钮1USD、2USD和5USD的作用是相同的,唯一不同的是它们的代表的币值不同。如果我们希望系统共用“币值相加”这个功能,即当这三个按钮任何一个被按下后都调用同一个函数(该函数的功能是将系统中原来的货币值与新加入的币值相加得到新的值)。这样,需要有一种途径把1USD、2USD和5USD代表的币值作为参数传递给函数。图 21所示为带参数的状态机结构,在消息队列的状态机模式中,加入了一个变体型的变量作为状态传递的参数。实际上,可以把红色的部分做成子vi,不仅节省
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LabVIEW 程序设计 模式 状态机 事件 结构 结合
限制150内