项目简介
本项目名为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】