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以验证所有功能。 如果成功,该布尔值应为真。
源码附件
解压缩密码:LabVIEW9527

夜雨聆风
