# MultiDAQ-Analysis **Repository Path**: gitee-ys/multi-daq-analysis ## Basic Information - **Project Name**: MultiDAQ-Analysis - **Description**: 多通道数据采集与分析系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-13 - **Last Updated**: 2026-01-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MultiDAQ-Analysis 多通道数据采集分析系统 [![.NET Framework](https://img.shields.io/badge/.NET%20Framework-4.8-blue.svg)](https://dotnet.microsoft.com/download/dotnet-framework/net48) [![License](https://img.shields.io/badge/license-Proprietary-red.svg)](LICENSE) [![Platform](https://img.shields.io/badge/platform-Windows-lightgrey.svg)](https://www.microsoft.com/windows) ## 📋 项目概述 MultiDAQ-Analysis 是一个专业的**多通道高速数据采集与分析系统**,主要用于放射性α/β射线的实时测量、数据采集和分析。系统采用 C# WinForms 开发,基于 MVP(Model-View-Presenter)架构模式,支持 7 个物理通道的并行数据采集和实时分析。 ### 核心特性 - ✅ **高速数据采集**:支持 2MHz 采样率,UDP 协议实时数据传输 - ✅ **多通道并行处理**:7 个独立通道同时采集 α/β 射线数据 - ✅ **实时数据分析**:支持脉宽分析、电压分布统计、信号有效性判定 - ✅ **多种测量模式**:单次测量、多轮测量、连续测量 - ✅ **多样品类型支持**:水样品、生物样品、气体样品、环境样品 - ✅ **数据可视化**:实时电压分布图、频率统计图表 - ✅ **配置管理**:通道参数配置、阈值设置、DAC 电压调节 - ✅ **许可证管理**:基于时间的许可证验证系统 - ✅ **数据持久化**:JSON 格式数据存储,支持导出和打印 --- ## 🏗️ 系统架构 ### 架构模式 本项目采用 **Passive View MVP** 模式(也称为 Humble Dialog 模式),所有业务逻辑由 Presenter 管理,View 层保持被动状态。 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 应用程序架构 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ View 层 │ ◄────── │ Presenter 层 │ │ │ │ (MainForm) │ │ (业务逻辑) │ │ │ └──────────────┘ └──────────────┘ │ │ │ │ │ │ └────────────────────────┼──────────────┐ │ │ │ │ │ │ ┌───────▼──────┐ ┌───▼──────────┐ │ │ │ Model 层 │ │ Util 层 │ │ │ │ (数据模型) │ │ (工具类) │ │ │ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` ### 目录结构 ``` MultiDAQ-Analysis/ ├── MultiDAQ-Analysis/ # 主项目 │ ├── View/ # 视图层(UI 界面) │ │ ├── MainForm.cs # 主界面 │ │ ├── DeviceSettingsForm.cs # 设备参数配置 │ │ ├── AdcDebugForm.cs # ADC 调试工具 │ │ ├── DACSettingsForm.cs # DAC 电压设置 │ │ └── ... # 其他窗体 │ ├── Model/ # 模型层(数据结构) │ │ ├── ChannelData.cs # 通道数据模型 │ │ ├── ThresholdConfig.cs # 阈值配置模型 │ │ ├── GlobalPresetData.cs # 全局预设数据 │ │ └── ... │ ├── Util/ # 工具类层 │ │ ├── HighSpeedUdpReceiver.cs # 高速 UDP 接收器 │ │ ├── UdpProtocolSender.cs # UDP 协议发送器 │ │ ├── NewProtocolDataParser.cs # 数据解析器 │ │ ├── HighPerformanceDataAdapter.cs # 高性能数据适配器 │ │ ├── UltraHighPerformanceChannelParser.cs # 超高性能通道解析器 │ │ ├── ChannelDataManager.cs # 通道数据管理器 │ │ ├── AppConfig.cs # 配置管理器 │ │ └── LogHelper.cs # 日志工具 │ ├── Calculation/ # 计算模块 │ │ ├── AlphaBetaDetectionCalculator.cs # α/β 检测计算器 │ │ └── ... │ ├── License/ # 许可证管理 │ │ ├── LicenseManager.cs # 许可证管理器 │ │ └── ... │ ├── Program.cs # 程序入口 │ └── app.config # 应用配置文件 ├── MultiDAQ-Analysis.Tests/ # 单元测试项目 ├── QLicense/ # 许可证库 ├── LicenseGeneratorTool/ # 许可证生成工具 ├── Setup1/ # 安装程序 ├── udp_simulator.py # UDP 数据模拟器(Python) ├── start_simulator.bat # 模拟器启动脚本 ├── UDP模拟器使用说明.md # 模拟器使用文档 ├── 测试指南.md # 测试指南 ├── 配置数据帧格式说明.md # 协议格式说明 ├── 上下位机通信接口对接文档.md # 通信协议文档 └── README.md # 本文档 ``` --- ## 🚀 快速开始 ### 系统要求 - **操作系统**:Windows 7/8/10/11(64位推荐) - **.NET Framework**:4.8 或更高版本 - **开发工具**:Visual Studio 2017 或更高版本 - **Python**(可选):3.7+ (用于 UDP 模拟器) - **内存**:建议 4GB 以上 - **网络**:支持 UDP 通信 ### 安装步骤 #### 1. 克隆或下载项目 ```bash git clone cd MultiDAQ-Analysis ``` #### 2. 打开解决方案 使用 Visual Studio 打开 `MultiDAQ-Analysis.sln` #### 3. 还原 NuGet 包 ```bash # 在 Visual Studio 中 工具 -> NuGet 包管理器 -> 管理解决方案的 NuGet 包 -> 还原 ``` #### 4. 编译项目 ```bash # 选择配置 Debug 或 Release # 生成解决方案 生成 -> 生成解决方案 (Ctrl+Shift+B) ``` #### 5. 运行程序 ```bash # 方式 1:在 Visual Studio 中按 F5 运行 # 方式 2:直接运行编译后的可执行文件 bin\Debug\MultiDAQ-Analysis.exe ``` --- ## 🔧 配置说明 ### 应用配置文件 (app.config) 主要配置项说明: ```xml ``` ### 通道参数配置 通道参数通过 JSON 文件存储,位于程序运行目录下: - **文件路径**:`ChannelData.json` - **配置内容**:每个通道的阈值、脉宽等参数 示例配置: ```json { "Channel2": { "AlphaPulseWidth": 1.5, "AlphaLowThreshold": 3.0, "BetaLow": 0.0, "BetaHigh": 1.5, "BetaMinPulseWidth": 0.5, "BetaMaxPulseWidth": 2.0, "StartThreshold": 0.1 } } ``` --- ## 📡 通信协议 ### 协议概述 系统采用 **UDP 协议**进行上下位机通信,支持双向数据传输: - **上位机 → 下位机**:配置命令(8 字节) - **下位机 → 上位机**:采样数据(84 字节) ### 上位机 → 下位机:配置命令(8 字节) ``` ┌──────┬──────┬────────────┬──────────┬──────────┬──────────┬──────────┬──────┐ │ Byte │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ ├──────┼──────┼────────────┼──────────┼──────────┼──────────┼──────────┼──────┤ │ 内容 │ 0x55 │ 0xA5 │ 寄存器地址│ 数据字节3 │ 数据字节2 │ 数据字节1 │数据字节0│ 0xF0 │ └──────┴──────┴────────────┴──────────┴──────────┴──────────┴──────────┴──────┘ ``` **寄存器地址定义**: | 地址 | 名称 | 功能 | |------|------|------| | 0x00 | RestartReq | 启动采样 | | 0x01 | StopReq | 停止采样 | | 0x02 | StartThreshold | 起征线设置 | | 0x03 | BetaLowThreshold | β 低阈值 | | 0x04 | BetaHighThreshold | β 高阈值 | | 0x05 | AlphaLowThreshold | α 低阈值 | ### 下位机 → 上位机:采样数据(84 字节) **总长度**:84 字节 = 7 个通道 × 12 字节/通道 **单通道数据结构(12 字节)**: ``` ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ │ Byte 0-1 │ Byte 2-3 │ Byte 4-5 │ Byte 6-7 │ Byte 8-9 │Byte 10-11│ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │ 起始帧 │ β扣除点数│ β采样点数│ β最大电压│ α采样点数│ α最大电压│ │ 0x5A 0xNN│ 2 bytes │ 2 bytes │ 2 bytes │ 2 bytes │ 2 bytes │ └──────────┴──────────┴──────────┴──────────┴──────────┴──────────┘ ``` **字节序**:大端序(Big-Endian) 详细协议说明请参考: - [配置数据帧格式说明.md](MultiDAQ-Analysis/配置数据帧格式说明.md) - [上下位机通信接口对接文档.md](MultiDAQ-Analysis/上下位机通信接口对接文档.md) --- ## 🧪 测试与调试 ### UDP 数据模拟器 项目包含一个 Python 编写的 UDP 数据模拟器,用于模拟下位机发送数据。 #### 快速启动 **方式 1:使用批处理脚本(推荐)** ```bash # 双击运行 start_simulator.bat ``` **方式 2:使用命令行** ```bash # 基本用法(默认:127.0.0.1:8858,每秒1包) python udp_simulator.py # 指定目标 IP 和端口 python udp_simulator.py --ip 192.168.1.100 --port 8858 # 发送 100 个数据包后停止 python udp_simulator.py --count 100 # 每 0.5 秒发送一次 python udp_simulator.py --interval 0.5 # 简洁模式(不打印详细信息) python udp_simulator.py --quiet ``` #### 模拟器参数 | 参数 | 简写 | 说明 | 默认值 | |------|------|------|--------| | `--ip` | `-i` | 目标 IP 地址 | 127.0.0.1 | | `--port` | `-p` | 目标端口 | 8858 | | `--interval` | `-t` | 发送间隔(秒) | 1.0 | | `--count` | `-c` | 发送数据包数量限制 | 无限制 | | `--quiet` | `-q` | 简洁模式 | 详细模式 | | `--random` | `-r` | 随机模式 | 真实模拟模式 | 详细使用说明请参考:[UDP模拟器使用说明.md](UDP模拟器使用说明.md) ### 测试流程 完整的测试流程请参考:[测试指南.md](测试指南.md) 主要测试项包括: 1. UDP 模拟器基本功能测试 2. 端口复用功能测试 3. 数据接收和解析测试 4. 通道切换功能测试 5. 配置保存功能测试 6. 设备设置页面测试 --- ## 📊 核心功能 ### 1. 数据采集 - **高速 UDP 接收**:128MB 缓冲区,支持高频数据接收 - **多线程并行解析**:提高数据处理效率 - **实时数据队列**:防止数据丢失 ### 2. 信号处理 #### α 信号判定规则 ``` α 有效 = (α采样点数 >= α脉宽阈值点数) ``` - 脉宽转换:脉宽点数 = 脉宽(ns) / 4 - 采样率:2MHz(每采样点 4ns) #### β 信号判定规则 ``` β 有效 = (β采样点数 > β最小脉宽点数) && (β采样点数 < β最大脉宽点数) && (β最大电压 < β高阈值) ``` ### 3. 数据可视化 - **电压分布图**:实时显示 α/β 信号的电压频率分布 - **统计图表**:显示各通道的计数统计 - **实时更新**:数据实时刷新,支持动态显示 ### 4. 测量模式 - **单次测量**:指定时长的单次测量 - **多轮测量**:支持多轮连续测量,自动记录每轮数据 - **连续测量**:持续测量模式 ### 5. 样品类型支持 - **水样品**:水质检测,支持体积、总残渣等参数 - **生物样品**:生物样本检测,支持鲜重、总灰分等参数 - **气体样品**:气体检测,支持采样体积、过滤效率等参数 - **环境样品**:环境监测,支持样品质量等参数 ### 6. 数据管理 - **JSON 存储**:数据以 JSON 格式持久化存储 - **数据导出**:支持导出测量结果 - **打印功能**:支持打印测量报告 --- ## 🔐 许可证管理 系统采用基于时间的许可证验证机制: ### 许可证类型 - **试用版**:30 天试用期 - **正式版**:永久授权或指定期限 ### 许可证验证流程 1. 程序启动时自动检查许可证 2. 验证许可证有效性和到期时间 3. 根据验证结果决定是否允许使用 ### 许可证生成 使用 `LicenseGeneratorTool` 项目生成许可证文件。 --- ## 📈 性能优化 ### 高性能特性 1. **多线程并行处理**:数据接收、解析、渲染分离 2. **高效数据结构**:使用 `ConcurrentQueue` 等线程安全集合 3. **内存优化**:大缓冲区设计,减少 GC 压力 4. **异步 UI 更新**:防止 UI 阻塞 ### 性能指标 - **接收速率**:支持 10+ 包/秒 - **处理延迟**:< 100ms - **队列容量**:50000 条数据 - **丢包率**:< 0.1% --- ## 🛠️ 开发指南 ### 代码规范 - 遵循 C# 命名规范 - 使用 XML 注释文档化公共 API - 保持代码整洁,遵循 SOLID 原则 ### 添加新功能 1. 在 `Model` 层定义数据模型 2. 在 `Util` 层实现业务逻辑 3. 在 `View` 层创建 UI 界面 4. 更新配置文件和文档 ### 调试技巧 - 启用日志打印:`app.config` 中设置 `LogPrint=1` - 使用 UDP 模拟器进行本地测试 - 查看控制台输出的详细日志 --- ## 📝 常见问题 ### Q1: 端口被占用怎么办? **A**: 检查是否有其他程序占用 8858 端口 ```bash # 查看端口占用 netstat -ano | findstr ":8858" # 修改配置文件中的端口号 ``` ### Q2: 无法接收数据? **A**: 检查以下几点: 1. 防火墙是否阻止 UDP 通信 2. IP 地址和端口配置是否正确 3. 下位机是否正常发送数据 4. 使用 UDP 模拟器测试 ### Q3: 数据解析错误? **A**: 确认: 1. 数据帧长度是否为 84 字节 2. 字节序是否为大端序 3. 起始帧是否为 0x5A ### Q4: 许可证过期? **A**: 联系管理员获取新的许可证文件 --- ## 📚 相关文档 - [UDP模拟器使用说明.md](UDP模拟器使用说明.md) - UDP 模拟器详细使用指南 - [测试指南.md](测试指南.md) - 完整的测试流程和检查清单 - [配置数据帧格式说明.md](MultiDAQ-Analysis/配置数据帧格式说明.md) - 数据帧格式详细说明 - [上下位机通信接口对接文档.md](MultiDAQ-Analysis/上下位机通信接口对接文档.md) - 通信协议完整文档 - [MVPOverviewClassDiagram.png](MVPOverviewClassDiagram.png) - MVP 架构类图 --- ## 🤝 贡献指南 欢迎提交问题和改进建议! ### 提交流程 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request --- ## 📄 许可证 本项目为专有软件,保留所有权利。 Copyright © 2026 脉冲星科技 --- ## 👥 联系方式 - **项目路径**:`D:\C#WorkSpace\multi-daq-analysis\MultiDAQ-Analysis\` - **技术支持**:请参考项目文档或联系开发团队 --- ## 🔄 版本历史 ### v1.0.0 (2026-01-11) - ✅ 初始版本发布 - ✅ 支持 7 通道数据采集 - ✅ 实现 UDP 通信协议 - ✅ 完成 α/β 信号处理 - ✅ 集成许可证管理 - ✅ 提供 UDP 模拟器 --- ## 🙏 致谢 感谢所有为本项目做出贡献的开发者和测试人员! --- **注意**:本 README 基于项目当前状态编写,如有更新请及时同步文档。