发 帖  
原厂入驻New

【LabVIEW】简单的JKI-State-Machine的多线程框架

2020-6-3 15:49:00  1285 QMH JKI Labview
分享
9
本帖最后由 asdxxw1874 于 2020-8-3 10:05 编辑

--------------------------引用帖--------------------------
【LabVIEW】结合QMH与JKI-State-Machine的多线程框架
--------------------------
主帖----------------------------
在上一篇帖子中说到了为什么需要将QMH与JKI-State-Machine 框架结合,以及如何下载安装JKI-State-Machine框架。
     在本帖中主要介绍如何将QMH与JKI-State-Machine 框架结合,重新编写后的框架我命名为QueuedMessage Handling框架,因为该框架本身就是基于消息队列处理框架。

     改好的框架大家可以在上一贴中自行下载。
捕获.PNG
改写这个框架的思路非常简单,主要就是基于消息队列处理框架,把消息处理的部分用JKI-State-Machine实现。


-------------------------- 子程序----------------------------
Obtain MassageQueue(JKI).vi
这个VI用来新建队列

max queuesize:队列容量,默认为-1,无限制。

name:队列名称,默认为空

MessageCluster:自定义消息类型,常量。

Obtain Massage Queue(JKI).png


CreateAll Message Queue(JKI).vi
这个VI用来创建用户输入的所有队列
MassageQueue Name Enum:队列名称数组,数组中有多少元素就会创建多少队列,队列名称为枚举控件中的字符串。
AllMessage Queue:用户所创建的消息队列。

QueueSize:队列容量。
Create All Message Queue(JKI).png

SearchMassage Queue(JKI).vi
这个VI用来在已经创建的队列中索引出用户指定的队列
AllMessage Queue:已经创建的队列。
MassageQueue Name Enum:用户需要索引出的队列名称。
MessageQueue:索引出来的队列。
InvalidQueue:索引出的队列是否无效。

empty?:队列为空。
Search Massage Queue(JKI).PNG

MassageData All(JKI).vi
这个VI用来创建消息数据(最大不能超过1000行数据)
MassageData:JKI格式的消息数据。
MassageData Array:解析后的消息数据。
Massage Data All(JKI).PNG

EnqueueMassage(JKI).vi
这个VI将JKI格式的数据写入消息队列或者写入队列前端
MassageQueue Name Enum:写入消息的队列名称。
MassageData:JKI格式的消息数据。
PriorityMessage? :是否在前端如队列,默认为否。
timeoutin ms :入队列超时,默认为-1,永不超时。
AllMessage Queue:消息队列。

InvalidQueue:无效的队列。

Enqueue Massage(JKI).PNG
DequeueMassage(JKI).vi
这个VI是消息出队列
AllMessage Queue:消息队列。
MassageQueue Name Enum:需要出队列的名称。
timeoutin ms:出队列超时,默认为-1,永不超时。
Message:出队列消息。
MessageData:出队列消息数据。
time:出队列时间。

Dequeue Massage(JKI).PNG

FlushQueue(JKI).vi
这个VI用来清除用户指定的队列消息数据
MassageQueue Name Enum:需要清除消息数据的队列名称。
AllMessage Queue:消息队列。
Flush Queue(JKI).PNG

GetQueue Status(JKI).vi
这个VI用来读取指定队列中未出队列的数据
AllMessage Queue:消息队列。
MassageQueue Name Enum:需要读取状态的队列名称。
data:队列中的数据。

time:读取时间。

Get Queue Status(JKI).PNG

ReleaseQueue(JKI).vi
这个VI用来释放用户输入的队列
AllMessage Queue:消息队列。
MassageQueue Name Enum:需要被释放的队列名称。
Release Queue(JKI).PNG


--------------------------模板----------------------------
Template.vi
这个模板是一个多线程队列消息处理框架。
运行流程:
创建队列→初始化JKI状态机→等待用户操作→超时Loop
事件处理:
OK按钮→Massage Loop写入OK消息数据→Massage Handler1中处理消息数据“OK1”
OK2按钮→MassageLoop写入OK 2消息数据→Massage Handler2中处理消息数据“OK2”
Cancel按钮→Massage Loop写入Exit消息数据→Massage Handler1& MassageHandler2中处理Exit消息→退出JKI状态机。
Template.gif

--------------------------后记----------------------------

路漫漫其修远兮,吾将上下而求索


希望大家在技术探索的路上越走越清晰



labview交流群:913872838
------------------- 2020/08/03----------------
[size=18.6667px]更新附件,附件更新为VIPM格式的安装包

xiongxinwei_lib_jki_state_machine(qmh)-1.0.0.1.zip

下载积分: 积分 -1 分

1.16 MB, 阅读权限: 1, 下载次数: 106, 下载积分: 积分 -1 分

相关经验

lgc242215 2020-6-10 16:41:27
非常不错,实例比那些理论实用多
回复

举报

比特元 2020-6-12 19:44:40
接上贴,楼主可以,看看
回复

举报

395696971 2020-6-13 13:22:55
666666666666666666666666666666
回复

举报

anoyman 2020-6-13 16:50:02
介绍的很详细,可以直接拿来做项目了
1回复

举报

395696971 2020-6-15 11:04:50
666666666666666666666666666666666
回复

举报

pfxqla1 2020-6-20 14:00:41
版本太高。打不开。
1回复

举报

hanbing823 2020-6-20 18:49:41
学习学习                     
回复

举报

☆笔墨含香☆ 2020-7-3 15:54:14

学习学习111111
回复

举报

weizuqiang 6 天前

学习学习
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表