LabVIEW程序设计模式(三)—消息队列型状态机模式
时间:01-09
来源:互联网
点击:
- 第一类:Initial
- UI Initial:前面板界面的初始化。
- Data Initial:数据的初始化。
- 第二类:System
- Idle(Default):空闲状态。
- CheckMoney:贩卖机中的剩余钱数和剩余的货物数以决定交易是否成功。
- Exit:退出程序。
图 8 自动贩卖机背面板
在UI Initial中,系统给标题栏和说明栏赋值,并将前面板的商品设置为不可购买状态,因为在初始化时还没有完成投币动作。如图 9所示。
图 9 UI Initial分支
在Data Initial中包含两个共享的数据:Money和GState,前者表示贩卖机中剩余的币值,初始化值为0;而后者表示贩卖机中各个商品剩余的数量,初始化值为20。数据使用移位寄存器传递以便于在各个case分支中共享和使用,如图 10所示。
图 10 Data Initial分支
CheckMoney分支主要是为了防止不合法的交易(如投入的币值不足或商品数量不足),如图 11所示。
图 11 CheckMoney分支
当程序运行到Exit分支时,将停止循环并退出程序,如图 12所示。
图 12 Exit分支
Idle分支用来监控前面板各个按钮控件的变化并执行相应的状态。该分支比较复杂,当检测到第0个按钮被按下时(即1USD按钮),贩卖机中的货币值应该加一,同时需要判断是否达到了交易条件(即进入CheckMoney状态)。其它的状态可以执行相应的代码即可,这里不再重复解释。
图 13 Idle分支
从本例可以看出,相比基本状态机而言,尽管程序的复杂度增加了,但是在构建大型的应用程序时也更加地健壮,代码也易于维护和查看。
LabVIEW程序设计模式消息队列型状态机模 相关文章:
- 频宽、取样速率及奈奎斯特定理(09-14)
- 为什么要进行信号调理?(09-30)
- IEEE802.16-2004 WiMAX物理层操作和测量(09-16)
- 为任意波形发生器增加价值(10-27)
- 基于PCI 总线的高速数据采集系统(09-30)
- 泰克全新VM6000视频测试仪助力数字电视等产品测试 (10-06)