# Daq **Repository Path**: lankii/Daq ## Basic Information - **Project Name**: Daq - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-23 - **Last Updated**: 2026-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
开源 · 免费 · 插件化 · 工业物联网数据采集工具
🏭 基于插件架构的工业物联网(IIoT)数据采集与传输工具
内置 Sqlite 数据库 · OPC UA 服务端 · MQTT Broker
🌐 官方网站 · 📦 GitHub · 📥 下载 · 🎬 演示视频
## ✨ 项目介绍 Snet.Iot.Daq 是依托 **Shunnet.top 工业通信库** 开发的插件化数采工具,专为工业设备数据采集场景设计。 ### 🏗️ 项目架构 ``` ┌─────────────────────────────────┐ │ Snet.Iot.Daq (WPF 桌面应用) │ ← UI 层:MVVM + Material Design ├─────────────────────────────────┤ │ Snet.Iot.Daq.Core (类库) │ ← 核心层:业务逻辑 / 数据模型 / 服务 ├─────────────────────────────────┤ │ Shunnet.top 工业通信库 │ ← 底层:插件框架 / 通信协议 / 工具 └─────────────────────────────────┘ ``` > 💡 Core 层不依赖 WPF,可被 Avalonia 等跨平台框架复用(已有适配器预留) ### 🛠️ 技术栈 | 分类 | 技术 / 库 | |------|-----------| | 🖼️ **UI 框架** | WPF + MVVM + Material Design | | 🔌 **插件引擎** | .NET `AssemblyLoadContext`(可回收上下文) | | 📡 **工业协议** | OPC UA Server、MQTT Broker(Shunnet.top 通信库) | | 💾 **数据存储** | SQLite(sqlite-net) | | 📊 **图表可视化** | ScottPlot | | 🖥️ **系统监控** | LibreHardwareMonitor | | 🔧 **依赖注入** | Microsoft.Extensions.DependencyInjection | | 🌐 **多语言** | 资源文件本地化(中 / 英) | ### 📋 功能矩阵 | 模块 | 说明 | |------|------| | 🔌 **插件热插拔** | 运行时加载 / 卸载采集或传输插件,无需重启 | | 📡 **OPC UA 服务端** | 内置 OPC UA Server,支持认证、证书、地址空间管理、持久订阅 | | 📨 **MQTT Broker** | 内置 MQTT 消息代理,支持客户端管理、认证、最大连接数控制 | | 📊 **实时图表** | 基于 ScottPlot 的多曲线实时图表,支持皮肤切换、历史数据 | | 🖥️ **系统监控** | CPU / GPU / RAM 实时仪表盘,基于 LibreHardwareMonitor | | 🎯 **字节级解析** | 可视化的字节/位/编码/数据格式配置器,支持自定义协议解析(字节/位/编码自由组合) | | 📦 **NuGet 插件市场** | 在线浏览、下载、一键安装 Shunnet 生态插件 | | 🌐 **多语言国际化** | 中英文双语界面,通过资源文件统一管理 | | 🌓 **主题切换** | 暗色 / 亮色主题一键切换,图表跟随变色 | | 🔢 **自动组包** | 离散地址智能合并批量读取,降低通信开销 | | ⚡ **设备软启动** | 软件启动时自动开始采集,无需手动干预 | | 🔔 **系统托盘** | 最小化到托盘后台运行,单实例强制保护 | | ❄️ **雪花动画** | 首页雪花粒子特效,主题跟随变色 | ### 🎯 适用场景 - 🏭 工业自动化数据采集 - 🔧 PLC / 设备监控系统 - 🌐 IoT 边缘采集网关 - 📡 OPC UA / MQTT 数据中转 - 🔬 自定义协议设备接入 ## 🚀 核心特性 ### 🏗️ 架构设计 - ✅ 完全开源免费(MIT License) - ✅ 插件化架构,支持无限扩展 - ✅ **插件热插拔**:运行时加载 / 卸载,无需重启应用 ### 📡 工业协议 - ✅ 内置 **OPC UA 服务端** + **MQTT Broker**,开箱即用 - ✅ 支持多设备并发采集 - ✅ 可视化的字节级协议解析器 ### 📊 数据与可视化 - ✅ 内置 SQLite 轻量级数据库 - ✅ 多曲线实时图表(ScottPlot) - ✅ 实时系统监控(CPU / GPU / RAM) ### 🔌 生态扩展 - ✅ NuGet 在线插件市场,一键下载安装 ### 🎨 用户体验 - ✅ 中英文多语言支持 - ✅ 暗色 / 亮色主题切换 - ✅ 🔔 系统托盘最小化后台运行 - ✅ ⚡ 设备软启动,开机自动采集 - ✅ 🔢 自动组包优化,智能合并离散地址 ### ⚡ 性能保障 - ✅ 极低 CPU / 内存占用 - ✅ 支持高频采集 - ✅ 支持 24/7 长期稳定运行 - ✅ 工业级稳定性 ## 🔌 插件热插拔 本项目基于 .NET `AssemblyLoadContext` 实现了完整的 **插件热插拔** 机制,支持在应用运行期间动态加载和卸载插件,无需重启进程。 ### 🔄 工作流程 ``` 上传 ZIP 插件包 → 自动解压到插件目录 → 创建可回收 AssemblyLoadContext → 流式加载程序集 → 扫描并实例化 IDaq / IMq 接口 → 注册到 IOC 容器 → 开始采集 ``` 卸载流程: ``` 停止采集 → 释放插件实例(IAsyncDisposable)→ 移除 IOC 注册 → 卸载 AssemblyLoadContext → GC 回收 → 删除插件文件 ``` ### 💡 技术亮点 | 特性 | 说明 | | --- | --- | | 可回收程序集上下文 | 使用 `AssemblyLoadContext(isCollectible: true)`,卸载后可被 GC 回收 | | 流式加载(无文件锁) | 通过 `MemoryStream` + `LoadFromStream` 加载 DLL,避免文件被锁定,卸载后即可删除 | | 类型一致性保证 | 共享接口程序集(如 `IDaq`、`IMq`)始终从默认上下文加载,确保 `as` 类型转换正确 | | 并发安全 | 使用 `ConcurrentDictionary` 管理插件实例与上下文,支持多插件并发操作 | | 双插件类型 | 同时支持 **DAQ**(数据采集类)和 **MQ**(消息队列类)两种插件 | | 调试支持 | 加载时自动附带 PDB 符号文件,方便调试插件代码 | ### 🛠️ 插件开发 1. 新建 .NET 类库项目,添加 NuGet 包:`Snet.Core`(提供 `IDaq` / `IMq` 接口) 2. 实现接口方法(`OnAsync`、`OffAsync`、`ReadAsync`、`WriteAsync`、`GetStatusAsync` 等) 3. 编译后将输出目录打包为 **ZIP** 文件 4. 在程序「插件设置」页面上传 ZIP 即可自动加载 > 🤖 **AI 辅助开发**:推荐使用 [Snet.SKILLS](https://github.com/shunnet/SKILLS) —— 针对 SNET 架构的 AI 技能集合,可加速插件开发流程。 ## 🖥️ 界面展示