Skip to content

JW-Albert/DAQ-Utility

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DAQUtility

一個多通道數據採集系統,支援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數據

核心組件

1. NiDAQHandler

  • 管理NI-DAQ設備的數據採集
  • 支援多通道類比輸入
  • 提供線程安全的數據緩衝

2. AudioDAQ

  • 管理ALSA音頻設備
  • 支援多設備同時採集
  • 自動設備檢測和配置

3. CSVWriter

  • 線程安全的CSV文件寫入
  • 自動文件輪換
  • 支援多通道數據格式

編譯要求

系統要求

  • Linux系統(支援ALSA音頻)
  • GCC編譯器(支援C++17)
  • NI-DAQmx驅動程序

依賴庫

  • libasound2-dev (ALSA音頻庫)
  • libnidaqmx (NI-DAQmx庫)
  • pthread (線程庫)

編譯命令

make clean
make

配置說明

1. 主配置文件 (Master.ini)

[SaveUnit]
second = 60  # 數據保存間隔(秒)

2. NI-DAQ配置 (NiDAQ.ini)

包含完整的NI-DAQmx任務配置,包括:

  • 通道配置(加速度計、電壓等)
  • 採樣率和緩衝區設置
  • 設備硬件配置

3. 音頻設備配置 (AudioDAQ_1.ini, AudioDAQ_2.ini)

[AudioDAQ]
device = 1        # 設備索引
sampleRate = 44100 # 採樣率

使用方法

1. 配置設備

使用提供的配置工具設置設備參數:

# 配置音頻設備
cd AudioDAQ_ini_Maker
make
./main

# 配置主程序參數
cd Master_ini_Maker
make
./main

2. 運行數據採集

# 編譯主程序
make

# 運行數據採集
./main

3. 程序操作

  • 啟動後會提示輸入數據標籤
  • 程序開始同步採集所有設備數據
  • 按 'Q' 或 'q' 停止採集並保存數據

數據輸出格式

文件結構

output/
├── NiDAQ/
│   └── YYYYMMDDHHMMSS_label/
│       ├── datadir.csv
│       └── ...
├── AudioDAQ_1/
│   └── YYYYMMDDHHMMSS_label/
│       ├── datadir.csv
│       └── ...
└── AudioDAQ_2/
    └── YYYYMMDDHHMMSS_label/
        ├── datadir.csv
        └── ...

CSV格式

  • NiDAQ數據:多列數據,每列代表一個通道
  • 音頻數據:單列數據,包含採樣值
  • 時間戳:文件名包含採集開始時間

開發工具

AudioDAQ_ini_Maker

  • 自動檢測可用的音頻設備
  • 生成音頻設備配置文件
  • 支援多設備配置

Master_ini_Maker

  • 設置數據保存間隔
  • 生成主配置文件

注意事項

  1. 權限要求:需要音頻設備訪問權限
  2. NI-DAQ驅動:確保NI-DAQmx驅動正確安裝
  3. 磁盤空間:長時間採集需要足夠的存儲空間
  4. 系統資源:多設備同時採集會消耗較多CPU和內存

故障排除

常見問題

  1. 音頻設備無法訪問:檢查ALSA權限和設備連接
  2. NI-DAQ初始化失敗:確認驅動安裝和設備連接
  3. 編譯錯誤:檢查依賴庫安裝和編譯器版本

調試模式

程序提供詳細的運行時信息,包括:

  • 設備初始化狀態
  • 數據採集計時器
  • 文件保存狀態

版本信息

  • 開發語言:C++17
  • 平台支援:Linux
  • 音頻支援:ALSA
  • DAQ支援:NI-DAQmx

授權

本專案僅供學術和研究用途使用。

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks