LabVIEW的Framework(5):状态机
来源:互联网 发布:手机上传淘宝图片模糊 编辑:程序博客网 时间:2024/05/21 13:57
在LV的模板里,用Standard State Mechine可以创建一个标准的状态机,可以试着创建一个看看状态机是啥样子的。
我对状态机的理解:首先最基本的,状态机实际上是一个包含很多代码分支的代码集合,决定具体执行哪条代码分支则是由输入的状态所决定的;其次,状态机的输入状态是可以改变的,在LV的状态机里,状态的改变是由内部的临界条件来完成的。
状态机的工作机制有一点类似与我们前面讨论过的消息队列,但是两者又有很大的不同。消息队列用于完成一系列设定好的执行步骤;状态机也可以完成一系列设定好的执行步骤,但状态机可以根据每个步骤执行的结果在步骤间跳转。(消息队列也可以通过一些变通来完成步骤间的跳转,但是我怎么看都觉得不如状态机爽 -_-!!)比如,有A、B、C三个步骤,当执行到步骤B时出错了,B的出错导致C不能执行,那么在状态机里我可以回去重新执行步骤B,直到执行正确之后再执行步骤C。
说了这么多,我都差点把自己给绕晕了,来看个例子吧。在例子里面,我们要实现一个小灯的亮灭控制,同时,还要控制亮灭的频率。虽然直接用一个While循环就可以搞定,但是这里我们先试着用状态机来实现。
LED就是我们的小灯,Loop用来控制小灯亮灭的频率,stop用来控制程序停止。
状态机有两个状态:On和Off。当处于On状态时,控制LED亮;当处于Off状态时,控制LED灭。在每一个状态里,都会判断处在当前状态的时间是否达到设定值(也即计数和Loop的值相等),如未达到,就继续停留在当前状态,如达到,则跳转到另一状态。
状态机的基本工作机制都在上面的例子里了。觉得用起来很繁琐,不知道有什么用处?呵呵,那我就布置一个作业,实现一个数据记录程序,点击开始即新建一个文件记录数据,点击结束则停止记录,当再次点击开始时,又另外新建一个文件记录数据。简单的说,就是在程序运行过程中,通过开始和停止来实现多个文件的创建。不许用状态机哦,下下篇我就会实现这个程序,看看谁的代码看起来更舒服一些^_^
- LabVIEW的Framework(5):状态机
- LabVIEW状态机
- LabVIEW的Framework(2):GUI程序
- LabVIEW的Framework
- labview的深入探索-----状态机的基本概念
- Labview与状态机/状态图的概念
- LabVIEW的Framework(6):Queue与Notifier
- LabVIEW的Framework(6):GUI程序框架实例
- LabVIEW的Framework(3):在GUI程序里使用消息队列
- LabVIEW的Framework(4):在GUI程序里传递数据
- LabVIEW设计模式系列——状态机
- 状态机(The State Machine Framework)
- 状态机--状态机5,关于战斗兵种的多状态
- LabVIEW与数据库的连接(写入)
- 5 状态机
- Labview机器视觉(5)-条形码读取
- 状态机的C语言编程(转)
- TCP拥塞状态机的实现(上)
- 钩子的介绍
- Mysql 日期和时间函数大全
- 剧本翻译之SHUFFLE 6月23日
- groovy
- 编辑距离(Levenshtein Distance) (转)
- LabVIEW的Framework(5):状态机
- 我在等一个人.....
- 备忘-在spring web应用中获得ApplicationContext的引用
- Ubuntu Eclipse 输入 乱码 解决
- How to Configure and Run PostgreSQL on Solaris 10
- 关于Eclipse VE(visual ediror)插件的一些总结
- 回调函数的介绍
- VC++中数据类型转换总结
- SOA夜未眠 1