LabVIEW 队列消息处理器设计

LabVIEW 队列消息处理器设计

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

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

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

队列状态机学习概述

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

队列状态机函数

获取队列引用函数

元素入队列函数

元素出队列函数

队列最前端插入元素函数

释放队列引用函数

队列消息处理器基本结构

因为这个消息分支它条件结构为字符型,所以说它必须要有默认分支。

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

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

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

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

再接下来看事件处理循环。他有三个动作。

如果按下了动作1 按钮,事件这个循环里面首先它会收集到一个动作1的值改变的事件。

首先往动作1这个队列里面发送了一个元素,发送的元素是就是Action1 和1个变体。

来到消息处理循环,既然那边发了一个元素,这边肯定又会收到一个元素。通过解绑来到消息分支

运行"Action 1"。跳到更新显示的这个分支里,它进行了一个跳转。然后往这个消息数据里,也就是往这个变体里发送了一个动作。在经过变体里发送了一个动作。

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

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

相关推荐
Funing74 小时前
FreeRTOS学习day1:Keil 工程配置与 FreeRTOS 链表机制理解
数据结构·学习·链表
心中有国也有家4 小时前
使用 DevEco Studio 配置 Flutter 鸿蒙签名
学习·flutter·华为·harmonyos
灯澜忆梦4 小时前
MySQL 完整学习路线
学习·mysql
番茄育学园4 小时前
我的三款主流云存储音乐库实测笔记
笔记·分类·媒体
森林古猿15 小时前
再论斜率优化
c++·学习·算法
心中有国也有家6 小时前
鸿蒙Flutter开发环境从零搭建教程(Windows/macOS双平台·避坑版)
学习·flutter·华为·harmonyos
十月的皮皮7 小时前
C语言学习笔记20260706-栈的压入、弹出序列验证
c语言·笔记·学习
心中有国也有家8 小时前
Flutter 鸿蒙适配第一步:从 hive 迁移到 hive\_ce
hive·学习·flutter·华为·harmonyos
渣渣灰飞8 小时前
MySQL 系统学习 第二阶段 第三章 DQL(Data Query Language)第二节:WHERE 条件查询
sql·学习·mysql
维他奶糖618 小时前
基于 DrissionPage 实现小红书搜索笔记批量采集
笔记