CQエレクトロニクス・セミナ「実習・マイコンを動かしながら学ぶディジタル・フィルタ」で使うプログラム.1次IIRフィルタの係数をターミナルから変更できる. http://seminar.cqpub.co.jp/ccm/ES18-0020

Dependencies:   mbed Array_Matrix BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

Revision:
0:47718d3154d9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MyFiles/TerminalInput.hpp	Mon Oct 09 02:36:11 2017 +0000
@@ -0,0 +1,64 @@
+//-----------------------------------------------------------
+//  ターミナルからパラメータを入力するためのクラス
+//
+//  2017/10/09, Copyright (c) 2017 MIKAMI, Naoki
+//-----------------------------------------------------------
+
+#ifndef TERMINAL_INPUT_HPP
+#define TERMINAL_INPUT_HPP
+
+#include "mbed.h"
+#pragma diag_suppress 870   // マルチバイト文字使用の warning 抑制のため
+
+namespace Mikami
+{
+    class TermInput
+    {
+    public:
+        // コンストラクタ
+        //      str: オブジェクトを生成する際に表示される文字列
+        TermInput(const string str = "") : pc_(USBTX, USBRX), rxBuf_("")
+        {
+            if (str != "") pc_.printf("%s", str.c_str());
+        }
+    
+        // ターミナルから入力された float 型の数値を取得する
+        //      val: ターミナルから入力された数値
+        //      戻り値: 入力が正常に完了した場合に true
+        //             それ以外は false
+        bool Get(float &val)
+        {
+            // ターミナルからの送信がなければ直ちに false を返す
+            if (!pc_.readable()) return false;
+            
+            // ターミナルからのデータを受け取った場合の処理
+            bool rtn = false;
+            char ch = pc_.getc();   // 受信バッファから1文字取得
+            pc_.putc(ch);           // 同じ文字をターミナルへ送信
+            if (ch == '\r')         // "Enter" を受信した場合は
+            {
+                pc_.putc('\n');     // "LF" も送信する
+
+                char *endptr;
+                val = strtof(rxBuf_.c_str(), &endptr);
+                if (*endptr == NULL)
+                    rtn = true;
+                else
+                    pc_.printf("不正な入力です.\r\n? ");
+                rxBuf_ = "";
+            }
+            else
+                rxBuf_ += ch;
+                
+            return rtn;
+        }
+
+        // ターミナルに出力する
+        void printf(const string str) { pc_.printf("%s", str.c_str()); }
+
+    private:
+        Serial pc_;
+        string rxBuf_;
+    };
+}
+#endif  // TERMINAL_INPUT_HPP