オシロスコープ. このプログラムの説明は,CQ出版社「トランジスタ技術」の2021年10月号から開始された連載記事「STM32マイコンではじめるPC計測」の中にあります.このプログラムといっしょに使うPC側のプログラムについても同誌を参照してください.
Dependencies: Array_Matrix mbed SerialTxRxIntr DSP_ADDA_Dual
InputBuffer.hpp@0:4440ad009afe, 2021-09-09 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Thu Sep 09 08:47:03 2021 +0000
- Revision:
- 0:4440ad009afe
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:4440ad009afe | 1 | //-------------------------------------------------------- |
MikamiUitOpen | 0:4440ad009afe | 2 | // バッファの template クラス |
MikamiUitOpen | 0:4440ad009afe | 3 | // |
MikamiUitOpen | 0:4440ad009afe | 4 | // 2021/07/19, Copyright (c) 2021 MIKAMI, Naoki |
MikamiUitOpen | 0:4440ad009afe | 5 | //------------------------------------------------------- |
MikamiUitOpen | 0:4440ad009afe | 6 | |
MikamiUitOpen | 0:4440ad009afe | 7 | #ifndef INPUT_BUFFER_HPP |
MikamiUitOpen | 0:4440ad009afe | 8 | #define INPUT_BUFFER_HPP |
MikamiUitOpen | 0:4440ad009afe | 9 | |
MikamiUitOpen | 0:4440ad009afe | 10 | #include "Array.hpp" |
MikamiUitOpen | 0:4440ad009afe | 11 | using namespace Mikami; |
MikamiUitOpen | 0:4440ad009afe | 12 | |
MikamiUitOpen | 0:4440ad009afe | 13 | class InputBuffer |
MikamiUitOpen | 0:4440ad009afe | 14 | { |
MikamiUitOpen | 0:4440ad009afe | 15 | public: |
MikamiUitOpen | 0:4440ad009afe | 16 | // コンストラクタ |
MikamiUitOpen | 0:4440ad009afe | 17 | explicit InputBuffer(int size, float initValue = 0) |
MikamiUitOpen | 0:4440ad009afe | 18 | : N_(size), buf_(2*size, initValue), index_(0), full_(false) {} |
MikamiUitOpen | 0:4440ad009afe | 19 | |
MikamiUitOpen | 0:4440ad009afe | 20 | // データを格納 |
MikamiUitOpen | 0:4440ad009afe | 21 | void Store(float data1, float data2) |
MikamiUitOpen | 0:4440ad009afe | 22 | { |
MikamiUitOpen | 0:4440ad009afe | 23 | buf_[index_] = data1; |
MikamiUitOpen | 0:4440ad009afe | 24 | buf_[N_+index_++] = data2; |
MikamiUitOpen | 0:4440ad009afe | 25 | } |
MikamiUitOpen | 0:4440ad009afe | 26 | |
MikamiUitOpen | 0:4440ad009afe | 27 | // バッファからデータの取り出し |
MikamiUitOpen | 0:4440ad009afe | 28 | Array<float> Get() const { return buf_; } |
MikamiUitOpen | 0:4440ad009afe | 29 | |
MikamiUitOpen | 0:4440ad009afe | 30 | // バッファが満杯で次の準備を行う |
MikamiUitOpen | 0:4440ad009afe | 31 | bool IsFullNext() |
MikamiUitOpen | 0:4440ad009afe | 32 | { |
MikamiUitOpen | 0:4440ad009afe | 33 | if (index_ < N_) return false; |
MikamiUitOpen | 0:4440ad009afe | 34 | |
MikamiUitOpen | 0:4440ad009afe | 35 | index_ = 0; |
MikamiUitOpen | 0:4440ad009afe | 36 | full_ = true; |
MikamiUitOpen | 0:4440ad009afe | 37 | return true; |
MikamiUitOpen | 0:4440ad009afe | 38 | } |
MikamiUitOpen | 0:4440ad009afe | 39 | |
MikamiUitOpen | 0:4440ad009afe | 40 | // バッファが満杯で,true を返す |
MikamiUitOpen | 0:4440ad009afe | 41 | bool IsFull() |
MikamiUitOpen | 0:4440ad009afe | 42 | { |
MikamiUitOpen | 0:4440ad009afe | 43 | bool temp = full_; |
MikamiUitOpen | 0:4440ad009afe | 44 | if (full_) full_ = false; |
MikamiUitOpen | 0:4440ad009afe | 45 | return temp; |
MikamiUitOpen | 0:4440ad009afe | 46 | } |
MikamiUitOpen | 0:4440ad009afe | 47 | |
MikamiUitOpen | 0:4440ad009afe | 48 | private: |
MikamiUitOpen | 0:4440ad009afe | 49 | const int N_; // バッファのサイズに対応する値 |
MikamiUitOpen | 0:4440ad009afe | 50 | Array<float> buf_; // バッファ |
MikamiUitOpen | 0:4440ad009afe | 51 | int index_; // 入力データのカウンタ |
MikamiUitOpen | 0:4440ad009afe | 52 | bool full_; // 満杯の場合 true |
MikamiUitOpen | 0:4440ad009afe | 53 | |
MikamiUitOpen | 0:4440ad009afe | 54 | // コピー・コンストラクタおよび代入演算子の禁止のため |
MikamiUitOpen | 0:4440ad009afe | 55 | InputBuffer(const InputBuffer&); |
MikamiUitOpen | 0:4440ad009afe | 56 | InputBuffer& operator=(const InputBuffer&); |
MikamiUitOpen | 0:4440ad009afe | 57 | }; |
MikamiUitOpen | 0:4440ad009afe | 58 | #endif // INPUT_BUFFER_HPP |