LabVIEW 标准状态机设计模式

LabVIEW 标准状态机设计模式

LabVIEW 软件框架介绍

源于虚拟仪器技术的LabVIEW程序设计语言,从被创建开始就是面向测量和应用的,并且绝大多数采用LabVIEW开发的应用程序都同测控仪器等硬件设备紧密结合。虽然这些设备的类型和规模各不相同,应用领域的差异也很大,但从测量和控制过程的基本步骤来看,绝大多数的LabVIEWV程序的基本框架是有章可循的,具有一定的模式特征。

多数的测量系统的应用程序框架可以分为8部分,包括初始化、打开会话、获取数据、分析数据、显示/存储数据等,如右图所示:

LabVIEW编程模式及其应用分析

LabVIEW是采用了独特的图形化数据流的编程模式,这种编程模式类似于传统的面向过程编程模式,。同样通过程序执行控制结构和子程序等组件来构成整个程序的框架。而这种图形化数据流的编程模式又与传统的文本的顺序执行有所不同,LabVIEW程序框图中节点间的数据流确定了代码的执行次序,这使得互不关联的代码可以简章地建立并行性程序。

基于这种图形化数据流的编程模式,在大量开发实践的基础上,为满足各种不同的应用需求,总结出了不同的程序代码框架,也就是LabVIEWV程序设计模式。

根据针对问题的不同,可以分为通用型和专用型。通用型的LabVIEW程序设计模式是针对一般性测量控制应用程序提出的,而专用型的LabVIEW程序设计模式是针对某些特殊的应用或应用中某些特殊功能提出的解决方案。

状态机模式的类型分析

按照两种类型分类,各种类型又分别包含以下几种设计模式:
通用型:主要包括状态机模式、消息队列模式和用户界面事件模式。
专用型:主要包括主从线程模式、生产消费模式、后台服务模式、异常处理模式和代理模式。

绝大多数的测试测量系统在运行时需要从一个状态转换到另一个状态,或者在不同的状态之间互相切换,直至结来。因此状态机模式作为一种典型的类顺序结构方式,被广泛应用于各种自动化测试系统申。状态机具有3个基本的要求:状态、事件和动作。任何一个状态机的执行都离不开这三个要素。

状态的选择是保证其他步骤有条不紊进行的前提,通常把程序需要经历的状态称做一个"状态序列",它描述了程序当前的运行情况。在设计可交互式状态序列时,"等待是一个必不可少的状态,因为常有一个状态需要等待用户"确认",这个状态决定了下一个状态,这取决于与外部对象的交互。

状态机在控制状态的同时,与各个状态对应的事件也会随之触发。

动作是事件的响应,当一个事件发生时,状态机会决定应该执行什么样的动作,这主要取决于目前所处的状态和发生的事件。

顺序型状态机是最简单的一种状态机结构,它和顺序结构等价。在状态机的基本架上,将循环索引端连接到Case结构的选择端口上,并在最后一个Case子框图中控制循环结束。

标准状态机设计模式及状态机应用学习

顺序型状态机是最简单的一种状态机结构,它和顺序结构等价。在状态机的基本构架上,将循环索引端连接到Case结构的选择端口上,并在最后一个Case子框图中控制循环结束。

顺序结构它的一个缺点是什么?

就是说当它每一个分支执行的条件是前一个分支必须执行完。如果说前一个分支没有执行完,那么后面的分支将永远不会被执行,直到前面一个分支执行完。这样就不便于我们程序的一个状态的一个跳转。如果在一个环节产生问题,那么程序可能会卡死在这个顺序结构里面。

我们使用顺序型状态机模式的话,就不会出现顺序结构的一种缺点。

注意:最下一条线是通过移位寄存器传递的时间,得出时间差。最上一条线是程序的转移过程,但是图的枚举转移中是否有误?

状态机结构

进行第一次运行。首先因为有条件分支,那么它第一次会跳到初始化的条件分支里面来。初始化条件分支你们的代码执行完毕之后,它就会跳到下一个分支。

跳到等待事件这个分支里面来。

等待事件有多条分支如下图所示:

通过事件的内容赋值给移位寄存器, 当while循环下一次执行的时候, 这边出来的就是"State 1"。

State 1",正在运行的文本,然后弹出一个提示对话框。当它执行完毕之后,他又会跳回到执行事件等待事件分支。

如果事件分支里 跳到"State 2"。

State 2",弹出一个提示对话框。然后选择跳转那个事件分支里


以上状态机结束了

相关推荐
祈禾13 小时前
Redis三大特殊数据类型
运维·服务器·数据库·redis·笔记·缓存
祈禾13 小时前
计算机组成原理之编译、汇编、链接、解释
开发语言·汇编·笔记·学习
知识分享小能手14 小时前
线性代数学习教程,从入门到精通,矩阵的初等变换与线性方程组(6)
学习·线性代数·矩阵
我命由我1234515 小时前
四流一致(合同流、业务流、资金流、发票流)
经验分享·学习·职场和发展·求职招聘·职场发展·产品经理·学习方法
知识分享小能手15 小时前
线性代数学习教程,从入门到精通,矩阵的初等变换与线性方程组(5)
学习·线性代数·矩阵
我的xiaodoujiao15 小时前
快速学习Python基础知识详细图文教程18--多线程
开发语言·python·学习·测试工具
AI Dog16 小时前
MathHub:数学建模学习社区,内置数学建模智能体Modulus
学习·数学建模·智能体·modulus·数学建模智能体
坐吃山猪16 小时前
WebFlux_学习Subscriber总结
java·开发语言·学习·webflux
GlueNa2SiO316 小时前
10-Docker生产环境部署与K8s入门
笔记·学习·docker·容器·kubernetes
茯苓gao16 小时前
无感FOC核心原理:没有编码器,电机如何获得转子电角度?
笔记·嵌入式硬件·学习