乐于分享
好东西不私藏

LabVIEW 用户事件队列框架(源码分享)

LabVIEW 用户事件队列框架(源码分享)

概述

LabVIEW 用户事件库/LabVIEW 用户事件队列框架

该框架来源于Github上的大佬瑞安/Ryan P的分享。

用户事件库通过添加命名用户事件和方法,扩展了内置的用户事件功能 在消息生成前检查用户事件是否已注册,以便事件发生 并未被丢弃。

LabVIEW 中的用户事件不遵循队列、通知符、信号量等的行为 用户事件不命名,在调用事件注册器前删除所有消息,并严格输入事件结构(实时不完全支持)。这在多线程应用中会导致用户界面出现不良行为 可以与处理器/消费者环路(即排队消息处理程序)分离。

特点:

  • 命名用户事件
    • 用户事件功能全局查找表以跟踪名称/引用
  • 对于可塑函数GenerateRegisteredStatusParseDestroy
    • 允许枚举或字符串消息 + 平整化数据
    • 支持通过用户事件引用或用户事件名称进行查找
  • 注册事件-等待事件
    • 内置功能,用于设置用户事件是否用于事件Registered
    • 自定义方法确保用户事件在生成事件前已准备好Wait for Registered

入门指南

打开并运行 ,看看如何使用这个库的示例。/src/Demo.vi

功能

创建

该函数Create.vi增加了设置用户事件名称的功能。函数全局存储 当被引用到名称时,用户事件引用将被调用。

注册 + 等待注册

用户事件的一个问题是,如果用户事件之前没有 消息生成后,消息被丢弃(即被忽略)。为了避免初始化过程中丢弃消息, 该库添加 和 以通知调用者用户事件 准备接受消息。Registered for EventsRegistered.vimWait for Registered.vi

一旦命名用户事件创建并注册,呼叫 Registered.vim通知用户 事件缓存显示用户事件已准备好接受消息。

调用线程时,使用Wait for Registered.vi成功注册。 这确保不同线程之间的用户事件同步,确保消息不会被丢弃 线程开始了。

注意:第一个调用 Registered.vim 的人会通知调用者,如果同一用户事件被注册到多个事件结构,用户事件已准备好

生成

这会生成一个用户事件。它接受一个或多个用户事件引用或用户事件名称。它支持带有逗号分隔的扁平数据字符串的枚举和字符串消息。Generate.vim<message>,<flattened_data>

解析

使用Parse.vim将收到的事件投射到消息+数据中。

状态

Status.vim返回用户事件引用、名称以及用户事件是否已注册(即准备接受消息)。

测试

运行 /tests/Test_UserEvent.vi以验证所有功能。 如果成功,该布尔值应为真。

源码附件

链接:LabVIEW-UserEvent-main.rar

解压缩密码:LabVIEW9527

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » LabVIEW 用户事件队列框架(源码分享)

评论 抢沙发

7 + 4 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮