オシロスコープ. このプログラムの説明は,CQ出版社「トランジスタ技術」の2021年10月号から開始された連載記事「STM32マイコンではじめるPC計測」の中にあります.このプログラムといっしょに使うPC側のプログラムについても同誌を参照してください.

Dependencies:   Array_Matrix mbed SerialTxRxIntr DSP_ADDA_Dual

InputBuffer.hpp

Committer:
MikamiUitOpen
Date:
2021-09-09
Revision:
0:4440ad009afe

File content as of revision 0:4440ad009afe:

//--------------------------------------------------------
//  バッファの template クラス
//
//  2021/07/19, Copyright (c) 2021 MIKAMI, Naoki
//-------------------------------------------------------

#ifndef INPUT_BUFFER_HPP
#define INPUT_BUFFER_HPP

#include "Array.hpp"
using namespace Mikami;

class InputBuffer
{
public:
    // コンストラクタ
    explicit InputBuffer(int size, float initValue = 0)
        : N_(size), buf_(2*size, initValue), index_(0), full_(false) {}
    
    // データを格納
    void Store(float data1, float data2)
    {
        buf_[index_] = data1;
        buf_[N_+index_++] = data2;
    }
    
    // バッファからデータの取り出し
    Array<float> Get() const { return buf_; }

    // バッファが満杯で次の準備を行う
    bool IsFullNext()
    {
        if (index_ < N_) return false;

        index_ = 0;
        full_ = true;
        return true;
    }

    // バッファが満杯で,true を返す
    bool IsFull()
    {
        bool temp = full_;
        if (full_) full_ = false;
        return temp;
    }

private:
    const int N_;       // バッファのサイズに対応する値
    Array<float> buf_;  // バッファ
    int index_;         // 入力データのカウンタ
    bool full_;         // 満杯の場合 true

    // コピー・コンストラクタおよび代入演算子の禁止のため
    InputBuffer(const InputBuffer&);
    InputBuffer& operator=(const InputBuffer&);
};
#endif  // INPUT_BUFFER_HPP