オシロスコープ

Dependencies:   Array_Matrix mbed SerialTxRxIntr DSP_ADDA_Dual

Committer:
MikamiUitOpen
Date:
Thu Dec 24 04:24:01 2020 +0000
Revision:
1:ed6daf25a058
Parent:
0:595c23d6949a
2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:595c23d6949a 1 //---------------------------------------------------------------------
MikamiUitOpen 0:595c23d6949a 2 // 符号付きデータを PC へ転送するためのクラス
MikamiUitOpen 0:595c23d6949a 3 //
MikamiUitOpen 0:595c23d6949a 4 // 2020/09/20, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 0:595c23d6949a 5 //---------------------------------------------------------------------
MikamiUitOpen 0:595c23d6949a 6
MikamiUitOpen 0:595c23d6949a 7 #include <string>
MikamiUitOpen 0:595c23d6949a 8 #include "Array.hpp"
MikamiUitOpen 0:595c23d6949a 9 #include "SerialRxTxIntr.hpp"
MikamiUitOpen 0:595c23d6949a 10 using namespace Mikami;
MikamiUitOpen 0:595c23d6949a 11
MikamiUitOpen 0:595c23d6949a 12 #ifndef XFER_CONVERT_TOPC_HPP
MikamiUitOpen 0:595c23d6949a 13 #define XFER_CONVERT_TOPC_HPP
MikamiUitOpen 0:595c23d6949a 14
MikamiUitOpen 0:595c23d6949a 15 class Xfer
MikamiUitOpen 0:595c23d6949a 16 {
MikamiUitOpen 0:595c23d6949a 17 public:
MikamiUitOpen 0:595c23d6949a 18 // コンストラクタ
MikamiUitOpen 0:595c23d6949a 19 Xfer(SerialRxTxIntr& rxTx, int size)
MikamiUitOpen 0:595c23d6949a 20 : SIZE_(size), xn_(size), rxTx_(rxTx) {}
MikamiUitOpen 0:595c23d6949a 21
MikamiUitOpen 0:595c23d6949a 22 // 転送すべきデータを転送する形式に変換
MikamiUitOpen 0:595c23d6949a 23 // -1 <= xIn[] <= 1
MikamiUitOpen 0:595c23d6949a 24 // 対応関係:1 => 10000, -1 => 0
MikamiUitOpen 0:595c23d6949a 25 void Convert(const float xIn[])
MikamiUitOpen 0:595c23d6949a 26 {
MikamiUitOpen 0:595c23d6949a 27 static const float FACTOR = 5000.0f;
MikamiUitOpen 0:595c23d6949a 28 for (int n=0; n<SIZE_; n++)
MikamiUitOpen 0:595c23d6949a 29 {
MikamiUitOpen 0:595c23d6949a 30 float x = FACTOR*(xIn[n] + 1.0f);
MikamiUitOpen 0:595c23d6949a 31 if (x > 10000) x = 10000;
MikamiUitOpen 0:595c23d6949a 32 xn_[n] = (uint16_t)x;
MikamiUitOpen 0:595c23d6949a 33 }
MikamiUitOpen 0:595c23d6949a 34 }
MikamiUitOpen 0:595c23d6949a 35
MikamiUitOpen 0:595c23d6949a 36 // データを PC へ転送(0 ~ 10,000 の範囲の値を 2 文字で表すコード化を利用)
MikamiUitOpen 0:595c23d6949a 37 void ToPC()
MikamiUitOpen 0:595c23d6949a 38 {
MikamiUitOpen 0:595c23d6949a 39 string str = "";
MikamiUitOpen 0:595c23d6949a 40 for (int n=0; n<SIZE_; n++)
MikamiUitOpen 0:595c23d6949a 41 {
MikamiUitOpen 0:595c23d6949a 42 div_t a = div(xn_[n], 100);
MikamiUitOpen 0:595c23d6949a 43 str += a.quot + 0x10;
MikamiUitOpen 0:595c23d6949a 44 str += a.rem + 0x10;
MikamiUitOpen 0:595c23d6949a 45 }
MikamiUitOpen 0:595c23d6949a 46 rxTx_.TxString(str+"\n");
MikamiUitOpen 0:595c23d6949a 47 rxTx_.TxString("EOT\n");
MikamiUitOpen 0:595c23d6949a 48 }
MikamiUitOpen 0:595c23d6949a 49
MikamiUitOpen 0:595c23d6949a 50 private:
MikamiUitOpen 0:595c23d6949a 51 const int SIZE_; // PC に送るデータ数
MikamiUitOpen 0:595c23d6949a 52 Array<uint16_t> xn_; // PC に送るデータ
MikamiUitOpen 0:595c23d6949a 53 SerialRxTxIntr& rxTx_;
MikamiUitOpen 0:595c23d6949a 54
MikamiUitOpen 0:595c23d6949a 55 // コピー・コンストラクタおよび代入演算子の禁止のため
MikamiUitOpen 0:595c23d6949a 56 Xfer(const Xfer&);
MikamiUitOpen 0:595c23d6949a 57 Xfer& operator=(const Xfer&);
MikamiUitOpen 0:595c23d6949a 58 };
MikamiUitOpen 0:595c23d6949a 59 #endif // XFER_CONVERT_TOPC_HPP