一個多通道數據採集系統,支援NI-DAQ和音頻設備的同步數據採集與記錄。
DAQUtility是一個C++開發的數據採集工具,能夠同時從多個數據源進行數據採集:
- NI-DAQ設備:支援加速度計等多通道類比輸入
- 音頻設備:支援多個ALSA音頻設備的同步採集
- 數據記錄:自動將採集到的數據保存為CSV格式
- 🔄 多設備同步採集:同時支援NI-DAQ和音頻設備
- 📊 實時數據處理:非阻塞式數據讀取和處理
- 💾 自動數據保存:可配置的數據保存間隔
- 🎛️ 靈活配置:通過INI文件進行設備配置
- 📁 組織化存儲:按時間戳和標籤組織數據文件
- 🛠️ 配置工具:提供便捷的配置生成工具
DAQUtility/
├── main.cpp # 主程序入口
├── Makefile # 編譯配置
├── API/ # 配置文件目錄
│ ├── Master.ini # 主配置文件
│ ├── NiDAQ.ini # NI-DAQ配置
│ ├── AudioDAQ_1.ini # 音頻設備1配置
│ └── AudioDAQ_2.ini # 音頻設備2配置
├── include/ # 頭文件和庫文件
│ ├── NiDAQ.h/.cpp # NI-DAQ處理器
│ ├── AudioDAQ.h/.cpp # 音頻設備處理器
│ ├── CSVWriter.h/.cpp # CSV文件寫入器
│ ├── iniReader/ # INI文件解析器
│ └── NiDAQmx/ # NI-DAQmx庫文件
├── AudioDAQ_ini_Maker/ # 音頻設備配置工具
├── Master_ini_Maker/ # 主配置工具
└── output/ # 數據輸出目錄
├── NiDAQ/ # NI-DAQ數據
├── AudioDAQ_1/ # 音頻設備1數據
└── AudioDAQ_2/ # 音頻設備2數據
- 管理NI-DAQ設備的數據採集
- 支援多通道類比輸入
- 提供線程安全的數據緩衝
- 管理ALSA音頻設備
- 支援多設備同時採集
- 自動設備檢測和配置
- 線程安全的CSV文件寫入
- 自動文件輪換
- 支援多通道數據格式
- Linux系統(支援ALSA音頻)
- GCC編譯器(支援C++17)
- NI-DAQmx驅動程序
libasound2-dev(ALSA音頻庫)libnidaqmx(NI-DAQmx庫)pthread(線程庫)
make clean
make[SaveUnit]
second = 60 # 數據保存間隔(秒)包含完整的NI-DAQmx任務配置,包括:
- 通道配置(加速度計、電壓等)
- 採樣率和緩衝區設置
- 設備硬件配置
[AudioDAQ]
device = 1 # 設備索引
sampleRate = 44100 # 採樣率使用提供的配置工具設置設備參數:
# 配置音頻設備
cd AudioDAQ_ini_Maker
make
./main
# 配置主程序參數
cd Master_ini_Maker
make
./main# 編譯主程序
make
# 運行數據採集
./main- 啟動後會提示輸入數據標籤
- 程序開始同步採集所有設備數據
- 按 'Q' 或 'q' 停止採集並保存數據
output/
├── NiDAQ/
│ └── YYYYMMDDHHMMSS_label/
│ ├── datadir.csv
│ └── ...
├── AudioDAQ_1/
│ └── YYYYMMDDHHMMSS_label/
│ ├── datadir.csv
│ └── ...
└── AudioDAQ_2/
└── YYYYMMDDHHMMSS_label/
├── datadir.csv
└── ...
- NiDAQ數據:多列數據,每列代表一個通道
- 音頻數據:單列數據,包含採樣值
- 時間戳:文件名包含採集開始時間
- 自動檢測可用的音頻設備
- 生成音頻設備配置文件
- 支援多設備配置
- 設置數據保存間隔
- 生成主配置文件
- 權限要求:需要音頻設備訪問權限
- NI-DAQ驅動:確保NI-DAQmx驅動正確安裝
- 磁盤空間:長時間採集需要足夠的存儲空間
- 系統資源:多設備同時採集會消耗較多CPU和內存
- 音頻設備無法訪問:檢查ALSA權限和設備連接
- NI-DAQ初始化失敗:確認驅動安裝和設備連接
- 編譯錯誤:檢查依賴庫安裝和編譯器版本
程序提供詳細的運行時信息,包括:
- 設備初始化狀態
- 數據採集計時器
- 文件保存狀態
- 開發語言:C++17
- 平台支援:Linux
- 音頻支援:ALSA
- DAQ支援:NI-DAQmx
本專案僅供學術和研究用途使用。