FFT によるスペクトル解析器
Dependencies: Array_Matrix mbed SerialTxRxIntr UIT_FFT_Real DSP_ADDA
Xfer.hpp
00001 //--------------------------------------------------------------------- 00002 // スペクトル解析の結果を PC へ転送するためのクラス 00003 // 00004 // 2020/02/05, Copyright (c) 2020 MIKAMI, Naoki 00005 //--------------------------------------------------------------------- 00006 00007 #include <string> 00008 #include "Array.hpp" 00009 #include "SerialRxTxIntr.hpp" 00010 using namespace Mikami; 00011 00012 #ifndef XFER_CONVERT_TOPC_HPP 00013 #define XFER_CONVERT_TOPC_HPP 00014 00015 class Xfer 00016 { 00017 public: 00018 // コンストラクタ 00019 Xfer(SerialRxTxIntr& rxTx, int size) 00020 : SIZE_(size), xn_(size), rxTx_(rxTx) {} 00021 00022 // スペクトル解析の結果を転送する形式に変換 00023 // yAbs FFT の結果の絶対値 00024 // magn 倍率 00025 void Convert(const float yAbs[], float magn = 1.0f) 00026 { 00027 const float MAX = 10000; 00028 for (int n=0; n<SIZE_; n++) 00029 { 00030 float x = magn*yAbs[n]; 00031 xn_[n] = (x > MAX) ? MAX : (uint16_t)x; 00032 } 00033 } 00034 00035 // データを PC へ転送(0 ~ 10,000 の範囲の値を 2 文字で表すコード化を利用) 00036 void ToPC() 00037 { 00038 string str = ""; 00039 for (int n=0; n<SIZE_; n++) 00040 { 00041 div_t a = div(xn_[n], 100); 00042 str += a.quot + 0x10; 00043 str += a.rem + 0x10; 00044 } 00045 rxTx_.TxString(str+"\n"); 00046 rxTx_.TxString("EOT\n"); 00047 } 00048 00049 private: 00050 const int SIZE_; // PC に送るデータ数 00051 Array<uint16_t> xn_; // PC に送るデータ 00052 SerialRxTxIntr& rxTx_; 00053 00054 // コピー・コンストラクタおよび代入演算子の禁止のため 00055 Xfer(const Xfer&); 00056 Xfer& operator=(const Xfer&); 00057 }; 00058 #endif // XFER_CONVERT_TOPC_HPP
Generated on Fri Jul 15 2022 00:11:09 by 1.7.2