首页 > 其他分享 >LabVIEW 队列消息处理器设计

LabVIEW 队列消息处理器设计

时间:2024-12-01 19:31:11浏览次数:10  
标签:函数 队列 引用 元素 状态机 LabVIEW 处理器 消息

LabVIEW 队列消息处理器设计

队列消息处理器升级模式详解

当我们需要动态地根据用户的输入改变状态序列时,状态机模式的劣势就显现出来,因为其状态序列是固定规定好的,一旦程序运行越来就无法修改。为此,需要引入消息队列模式,通过建立队列缓冲区来解决这个问题。这种模式也称为“队列型状态机模式”,但是由于其应用和原理都并不局限于状态机模式,所以为了避免混淆,一般称为“消息队列处理模式”

程序员可以将消息队列看成一段存储空间,用来暂存各种消息。之所以称为队列,是由其消息处理机制决定的,按照FIFO(先进先出)的思想,需要使用队列的方式处理各种消息。在程序初始化时,首先创建消息队列缓冲器,程序可以根据发生的事件将相应的消息投入到消息队列中,消息处理机构会实时探测消息队列中的消息并按照消息处理机制进行处理:当消息被接收后程序会执行相应的代码并将该消息从消息队列中删除;当接收到消息“Exit"时,应用程序会停止运行,并释放队列空间。

在这里插入图片描述

队列状态机学习概述

建立消息队列的方式有多种,常用的是使用队列函数和数组。队列函数位于“同步→队列操作”函数子选板中,常用的4个是获取队列引用,元素入队列,元素出队列和释放队列引用。而使用数组操作函数对消息进行操作,结构简单,只需要配合移位寄存器使用即可,不需要额外的函数而且不需要使用特别的函数手动销毁队列空间,在应用程序退出时会自动销毁队列。

队列状态机函数

获取队列引用函数

在这里插入图片描述

元素入队列函数

在这里插入图片描述

元素出队列函数

在这里插入图片描述

队列最前端插入元素函数

在这里插入图片描述

释放队列引用函数

在这里插入图片描述

队列消息处理器基本结构

在这里插入图片描述
因为这个消息分支它条件结构为字符型,所以说它必须要有默认分支。

初始化我们首先要创建一个获取一个队列的引用。我们首先去排一个人去排一个元素去排队。然后这时候我们获取引用传递到两个while循环里面

(元素入队列函数)这边既然这边入了一个元素,(元素出队列函数)那这边肯定会出来一个元素。那当它入一个元素,它出一个元素之后,我们通过消息处的一个解绑,来到消息分支可以获取到。

在这里插入图片描述

进入“Init”。初始化来之后,先把显示的消息给初始化掉,给清空掉。

接下来我们就进入一个事件等待的过程。因为它初始化完了之后,它下一步操作没有进行跳转,所以说他下一步就一直停留在等待的这个环节里面。

在这里插入图片描述

再接下来看事件处理循环。他有三个动作。
如果按下了动作1 按钮,事件这个循环里面首先它会收集到一个动作1的值改变的事件。

在这里插入图片描述
首先往动作1这个队列里面发送了一个元素,发送的元素是就是Action1 和1个变体。
来到消息处理循环,既然那边发了一个元素,这边肯定又会收到一个元素。通过解绑来到消息分支
在这里插入图片描述
运行“Action 1”。跳到更新显示的这个分支里,它进行了一个跳转。然后往这个消息数据里,也就是往这个变体里发送了一个动作。在经过变体里发送了一个动作。

在这里插入图片描述
更新显示环节里来之后,首先把这个变体转换为我们就是字符串数据,然后显示出来结束。

在这里插入图片描述
执行停止的一个条件。当停止时间按下之后,它跳到退出里面来,这时候显示退出数据销毁引用,这时候给一个停止的条件,然后它退出。

标签:函数,队列,引用,元素,状态机,LabVIEW,处理器,消息
From: https://blog.csdn.net/weixin_41226265/article/details/144167100

相关文章

  • python学习笔记(15)算法(8)双向队列
    在队列中,我们仅能删除头部元素或在尾部添加元素。双向队列(double‑endedqueue)提供了更高的灵活性,允许在头部和尾部执行元素的添加或删除操作。一、双向队列常用操作队首入队(push_front):在双向队列的头部添加一个元素。队首出队(pop_front):删除双向队列头部的元素。队尾入队(push......
  • 数据结构第一弹-队列
    大家好,今天和大家一起分享一下数据结构中的队列相关内容~队列是一种非常重要的线性数据结构,遵循先进先出(FIFO,FirstInFirstOut)的原则。一、队列概述队列是一种特殊的线性表,它只允许在一端进行插入操作,在另一端进行删除操作。队列的入口称为队尾(rear),出口称为队头(front)。......
  • C#基础之预处理器,异常处理
    目录1预处理器1.1简介1.1.1定义1.1.2预处理器指令列表1.2指令示例详解1.2.1#define和#undef预处理器1.2.2条件指令:#if,#elif,#else和#endif1.2.3综合示例2异常处理2.1简介2.1.1定义2.1.2异常类2.2异常处理2.2.1常规处理2.2.2不指定具体异常2.2.2.1catch中......
  • 【消息队列】RabbitMq-声明队列与交换机
    通过Spring配置,Bean注入的形式依赖配置<!--AMQP依赖,包含RabbitMQ--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>yaml文件配置spring:rabbitmq:host:......
  • 插入式注解处理器
    实战:插入式注解处理器目标:检查是否符合驼式命名法详细描述查看【深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)】10.4实战:插入式注解处理器(510页)1.代码部分1.注解处理器NameCheckProcessorpackageorg.anno;importjavax.annotation.processing.*;importjavax.lang.mo......
  • 1201-用栈实现最小队列
    最小栈leetcode232.题目大意:仅使用两个栈实现一个队列,要求实现push、pop、peek、empty解题思路:栈和队列刚好想法,队列是先进先出,设定a队列正常存放,b队列存放倒序,push的操作正常存放进a队列,pop的操作需要倒序,peek也需要倒序,将判断方法放置于peek中,peek操作不会操作具体队列,需要......
  • 从源码角度深入剖析Spring Bean对象创建过程中各后置处理器的作用与实现原理
            springioc容器刷新的过程中涵盖了bean对象的创建流程,再bean对象创建的过程中,使用了哪些后置处理器(扩展接口)?这些后置处理器又有什么作用?下图为spring容器刷新过程中,各处理器的位置。        本文着重对BeanDefinitionRegistryPostProcessor、MergedB......
  • 单调队列
    单调队列的定义顾名思义,单调队列就是队内元素具有单调性的队列。根据需要我们可以直接从队头取出队列中的最大值或最小值,并且剩下的元素仍然具有单调性。通过一个经典题目来了解单调队列滑动窗口-AcWing题库给定一个大小为n≤106的数组。有一个大小为k的滑动窗口,它从数组......
  • Windows系统使用安装ActiveMQ消息队列手把手保姆级教程踩坑实录
    文章目录一、什么是ActiveMQ1.概述2.架构3.应用场景二、下载ActiveMQ三、解压四、配置环境变量五、启动ActiveMQ六、验证安装和服务七、停止ActiveMQ八、注意事项一、什么是ActiveMQ1.概述ActiveMQ是Apache软件基金下的一个开源软件,它遵循JMS1.1规范(JavaMessage......
  • 程序员在LabVIEW编程时要注意哪些法律问题
    在使用LabVIEW进行编程时,程序员需要注意一些法律问题,尤其是在知识产权、许可协议、数据保护等方面。以下是程序员在LabVIEW编程过程中可能遇到的主要法律问题和应注意的事项:​1. 软件许可与版权问题LabVIEW作为商业软件,其使用受限于NI(National Instruments)所制定的许可......