littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于C++和MongoDB的DAQ数据采集系统

项目简介

本项目名为REDAX,是一个数据采集(DAQ)系统。它运用C++编写,并依赖MongoDB实现数据的存储与管理,主要负责处理来自CAEN PCI卡的数据。系统支持多个读卡器实例,还配备可选的调度器(Dispatcher)来管理多个读卡器进程,适用于高精度数据采集和处理场景,如物理实验中的信号采集。

项目的主要特性和功能

  • 支持多个读卡器实例,各实例能独立处理不同光学链路的数据。
  • 集成MongoDB,采集的数据、状态和日志均存储其中,方便后续查询与分析。
  • 具备可选的调度器,用于管理多个读卡器进程,简化多实例环境下的命令分发和状态监控。
  • 可通过命令行参数和配置文件灵活配置读卡器ID、MongoDB连接信息、日志存储位置等。
  • 能定期将读卡器状态写入MongoDB,便于实时监控和故障排查。

安装使用步骤

安装依赖

  • 安装MongoDB C++驱动、CAENVMElib v2.5+、libblosc-dev、liblz4-dev等依赖项。
  • 使用C++17兼容的编译器(如gcc 7.3.0)。
  • 安装CAEN PCI卡的驱动程序。

编译项目

在项目根目录下运行 make 命令进行编译。

启动读卡器进程

使用以下命令启动读卡器进程: ./redax --id <id> --uri <mongo_uri> [--reader | --cc ] [--db <database_name>] [--logdir <logging directory>] [--log-retention <days>] [--arm-delay <ms>] [--help] 其中 <id> 是读卡器的唯一标识符,<mongo_uri> 是MongoDB的连接URI,--reader--cc 指定实例类型(读卡器或机箱控制器)。

启动调度器(可选)

如果使用多个读卡器进程,可以启动调度器来管理它们: python dispatcher.py --config=options.ini options.ini 是调度器的配置文件,详细配置请参考 dispatcher 子目录中的README。

数据库设置

  • 确保MongoDB中已创建以下集合:
  • control:用于存储控制命令。
  • status:用于存储读卡器的状态信息。
  • log:用于存储日志信息。
  • options:用于存储设置文档。
  • 如果使用调度器,还需创建 detector_control 集合。

开始数据采集

确保所有硬件设备已正确连接,并启动读卡器进程。系统将开始采集数据并将其存储到MongoDB中。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】