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",弹出一个提示对话框。然后选择跳转那个事件分支里


以上状态机结束了

相关推荐
AOwhisky9 小时前
MySQL 学习笔记(第一期):数据库基础与 MySQL 初探
运维·数据库·笔记·学习·mysql·云计算
RainCity9 小时前
Java Swing 自定义组件库分享(十一)
java·笔记·后端
try2find9 小时前
Agent学习之补充my_plan_solve_agent
学习
bbaydnog10 小时前
FreeRTOS学习笔记 18:调试方法论——HardFault排查、栈溢出检测、运行时统计,RTOS调试三板斧
笔记·单片机·freertos
想你依然心痛10 小时前
HarmonyOS 6(API 23)实战:打造“光码智学舱“——AI编程学习新范式
学习·ar·ai编程·harmonyos·智能体
Lin_Aries_042111 小时前
ETPNav 复现指南:从环境搭建到连续环境视觉语言导航全流程
笔记·具身智能·datawhale
一口吃俩胖子12 小时前
【脉宽调制DCDC功率变换学习笔记023】渐进分析法
笔记·学习
m0_3771081412 小时前
pid学习
学习
爱喝水的鱼丶12 小时前
SAP-ABAP:SAP基础数据校验工具开发系列博客(共5篇)第三篇:SAP接口对接开发:实现数据的实时/批量校验交互
运维·数据库·学习·性能优化·sap·abap·经验交流
智者知已应修善业12 小时前
【51单片机2个外部中断切换LED花样】2024-1-3
c++·经验分享·笔记·算法·51单片机