LabVIEW的DQMH 框架

​DQMH(Queued Message Handler 增强框架):全球最受欢迎的LabVIEW 第三方框架,免费开源,专为大型 LabVIEW 应用开发设计,适配 CLAD/CLD 级开发者,基于 NI QMH 模式优化,低门槛且功能完善。

基础术语

(一)通用术语

  1. 进程(Process):持续运行的代码,通常是含一个及以上 while 循环的 VI

  2. 重入性(Reentrancy):同一 VI 的多个实例可同时运行的能力

  3. 应用程序接口(API):逻辑组织的相关函数组

  4. 业务逻辑(Business Logic):非框架自带的应用专属代码,需按规范编写在指定位置

  5. 同步进程(Synchronous Process):有序操作,依赖其他进程完成

  6. 异步进程(Asynchronous Process):独立操作,与其他进程并行运行

  7. 队列(Queue):LabVIEW API,用于进程内 / 进程间数据传递

  8. 事件(Event):LabVIEW API,用于进程内 / 进程间数据传递

  9. 设计模式(Design Pattern):执行同步 / 异步代码的理论机制(如状态机、队列状态机、生产者 / 消费者、QMH)

  10. 架构(Architecture):一种 / 多种设计模式的实际实现,便于异步代码执行(如 JKI 状态机)

  11. 框架(Framework):企业级架构,含文档和工具以提升开发体验(如 DQMH、Actor Framework)

(二)DQMH 专属术语

  1. DQMH 模块(DQMH Module):框架基础构建块,含清晰公共 API 的异步进程(.lvlib 格式),支持单例(非重入)/ 可克隆(重入)

  2. 请求(Request):外部向模块发起的操作指令,基于用户事件实现,可按需返回结果(公共 API 中的 VI)

  3. 广播(Broadcast):模块向外部发送的通知,基于用户事件实现,不依赖外部注册

  4. 主 VI(Main VI):应用的核心 QMH VI

  5. API 测试器(API Tester):测试模块公共 API 的 VI,支持验证模块运行状态,是核心实用工具

  6. 脚本工具(Scripting Tools):框架核心工具,支持模块 / 请求 / 广播的创建 / 重命名 / 删除 / 验证,强制最佳开发实践

NI QMH与 DQMH

NI QMH 痛点 DQMH 优化
进程间通信复杂 保留队列(进程内通信),新增用户事件(进程间通信)
多模块系统扩展性差 模块化设计,脚本工具简化架构级修改
进程 VI 复用性有限 模块独立封装,公共 API 标准化,降低耦合
难支持重入性 原生支持单例 / 可克隆模式,无需手动修改
架构级修改繁琐易出错 脚本工具自动化处理(如新增循环帧)

DQMH 核心特性

  1. 通信机制:进程内用队列,进程间用用户事件

  2. 工具支持:脚本工具自动化框架级操作,模块升级时自动应用 bug 修复

  3. 内置能力:异步编程核心功能(启动 / 停止控制、错误管理、面板管理、调试支持)

  4. 生态优势:活跃开发者社区,DQMH 联盟响应功能需求

  5. 低门槛:极少依赖 LabVIEW 类,QMH 用户易上手

开发者指南

(一)模块开发者

  1. 保持 API 测试器更新,使用脚本工具进行框架级修改,禁止手动修改框架 VI

  2. 全面文档化(模块描述、事件描述),可通过 Antidoc 自动生成项目文档

  3. 可创建模块模板提升开发效率

(二)模块使用者

  1. VIPM 安装的模块可直接在面板调用,非安装模块需从模块.lvlib 的 Public API 文件夹获取请求,从事件结构的事件列表获取广播

  2. 参考 API 测试器 VI 学习 API 用法并验证模块运行状态

相关推荐
LabVIEW开发3 天前
LabVIEW插值应用
算法·labview·labview知识·labview功能·labview程序
LabVIEW开发4 天前
LabVIEW控制阀性能测试评估系统
人工智能·labview·labview知识·labview功能·labview程序
LabVIEW开发5 天前
LabVIEW振动信号采集分析
fpga开发·labview·labview知识·labview功能·labview程序
LabVIEW开发7 天前
LabVIEW PID VI 温控参数全解与应用
labview·labview知识·labview功能·labview程序
俊俊谢10 天前
LabVIEW如何排查和修复dll缺失问题
驱动开发·.net·labview·dll
unicrom_深圳市由你创科技10 天前
LabVIEW和C#在工业控制中的应用差异是什么?
fpga开发·c#·labview
电气_空空10 天前
基于 LabVIEW 串口通信的研究
单片机·嵌入式硬件·毕业设计·labview
电气_空空10 天前
基于 LabVIEW 的 PID 控制系统设计与实现
嵌入式硬件·毕业设计·labview
LabVIEW开发11 天前
LabVIEW线性规划单纯形法实现
labview·labview知识·labview功能·labview程序
测试专家14 天前
反射内存卡、PCI 采集卡或 LabVIEW 驱动调试方面遇到的问题
labview