CQ出版社セミナ,2021/12/07開催「実習・C++言語によるArmマイコンのプログラミング」で使うプログラム.
Dependencies: Array_Matrix mbed SerialTxRxIntr UIT_FFT_Real
Xfer.hpp
- Committer:
- MikamiUitOpen
- Date:
- 2020-04-02
- Revision:
- 5:5e55a5f440c0
- Parent:
- 4:741883d4a075
File content as of revision 5:5e55a5f440c0:
//--------------------------------------------------------------------- // スペクトル解析の結果を PC へ転送するためのクラス // // 2020/02/05, Copyright (c) 2020 MIKAMI, Naoki //--------------------------------------------------------------------- #include <string> #include "Array.hpp" #include "SerialRxTxIntr.hpp" using namespace Mikami; #ifndef XFER_CONVERT_TOPC_HPP #define XFER_CONVERT_TOPC_HPP class Xfer { public: // コンストラクタ Xfer(SerialRxTxIntr& rxTx, int size) : SIZE_(size), xn_(size), rxTx_(rxTx) {} // スペクトル解析の結果を転送する形式に変換 void Convert(const float db[]) { static const float FACTOR = 10000.0f/80.0f; // 表示範囲: 0 ~ 80 dB for (int n=0; n<SIZE_; n++) { int32_t xDb = (int32_t)(FACTOR*(db[n] + 40.0f)); if (xDb > 10000) xDb = 10000; if (xDb < 0) xDb = 0; xn_[n] = (uint16_t)xDb; } } // データを PC へ転送(0 ~ 10,000 の範囲の値を 2 文字で表すコード化を利用) void ToPC() { string str = ""; for (int n=0; n<SIZE_; n++) { div_t a = div(xn_[n], 100); str += a.quot + 0x10; str += a.rem + 0x10; } rxTx_.TxString(str+"\n"); rxTx_.TxString("EOT\n"); } private: const int SIZE_; // PC に送るデータ数 Array<uint16_t> xn_; // PC に送るデータ SerialRxTxIntr& rxTx_; // コピー・コンストラクタおよび代入演算子の禁止のため Xfer(const Xfer&); Xfer& operator=(const Xfer&); }; #endif // XFER_CONVERT_TOPC_HPP