CQエレクトロニクス・セミナ「実習・マイコンを動かしながら学ぶディジタル・フィルタ」で使う適応線スペクトル強調器(ALE)のプログラム.ステップサイズパラメータをターミナルから変更できる. http://seminar.cqpub.co.jp/ccm/ES18-0020
Dependencies: F746_GUI F746_SAI_IO mbed
MyFiles/TerminalInput.hpp@4:bde47691ec93, 2018-09-04 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Sep 04 05:52:44 2018 +0000
- Revision:
- 4:bde47691ec93
- Parent:
- 0:c8e52f514e03
5
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:c8e52f514e03 | 1 | //----------------------------------------------------------- |
MikamiUitOpen | 0:c8e52f514e03 | 2 | // ターミナルからパラメータを入力するためのクラス |
MikamiUitOpen | 0:c8e52f514e03 | 3 | // |
MikamiUitOpen | 0:c8e52f514e03 | 4 | // 2017/10/09, Copyright (c) 2017 MIKAMI, Naoki |
MikamiUitOpen | 0:c8e52f514e03 | 5 | //----------------------------------------------------------- |
MikamiUitOpen | 0:c8e52f514e03 | 6 | |
MikamiUitOpen | 0:c8e52f514e03 | 7 | #ifndef TERMINAL_INPUT_HPP |
MikamiUitOpen | 0:c8e52f514e03 | 8 | #define TERMINAL_INPUT_HPP |
MikamiUitOpen | 0:c8e52f514e03 | 9 | |
MikamiUitOpen | 0:c8e52f514e03 | 10 | #include "mbed.h" |
MikamiUitOpen | 0:c8e52f514e03 | 11 | #pragma diag_suppress 870 // マルチバイト文字使用の warning 抑制のため |
MikamiUitOpen | 0:c8e52f514e03 | 12 | |
MikamiUitOpen | 0:c8e52f514e03 | 13 | namespace Mikami |
MikamiUitOpen | 0:c8e52f514e03 | 14 | { |
MikamiUitOpen | 0:c8e52f514e03 | 15 | class TermInput |
MikamiUitOpen | 0:c8e52f514e03 | 16 | { |
MikamiUitOpen | 0:c8e52f514e03 | 17 | public: |
MikamiUitOpen | 0:c8e52f514e03 | 18 | // コンストラクタ |
MikamiUitOpen | 0:c8e52f514e03 | 19 | // str: オブジェクトを生成する際に表示される文字列 |
MikamiUitOpen | 0:c8e52f514e03 | 20 | TermInput(const string str = "") : pc_(USBTX, USBRX), rxBuf_("") |
MikamiUitOpen | 0:c8e52f514e03 | 21 | { |
MikamiUitOpen | 0:c8e52f514e03 | 22 | if (str != "") pc_.printf("%s", str.c_str()); |
MikamiUitOpen | 0:c8e52f514e03 | 23 | } |
MikamiUitOpen | 0:c8e52f514e03 | 24 | |
MikamiUitOpen | 0:c8e52f514e03 | 25 | // ターミナルから入力された float 型の数値を取得する |
MikamiUitOpen | 0:c8e52f514e03 | 26 | // val: ターミナルから入力された数値 |
MikamiUitOpen | 0:c8e52f514e03 | 27 | // 戻り値: 入力が正常に完了した場合に true |
MikamiUitOpen | 0:c8e52f514e03 | 28 | // それ以外は false |
MikamiUitOpen | 0:c8e52f514e03 | 29 | bool Get(float &val) |
MikamiUitOpen | 0:c8e52f514e03 | 30 | { |
MikamiUitOpen | 0:c8e52f514e03 | 31 | // ターミナルからの送信がなければ直ちに false を返す |
MikamiUitOpen | 0:c8e52f514e03 | 32 | if (!pc_.readable()) return false; |
MikamiUitOpen | 0:c8e52f514e03 | 33 | |
MikamiUitOpen | 0:c8e52f514e03 | 34 | // ターミナルからのデータを受け取った場合の処理 |
MikamiUitOpen | 0:c8e52f514e03 | 35 | bool rtn = false; |
MikamiUitOpen | 0:c8e52f514e03 | 36 | char ch = pc_.getc(); // 受信バッファから1文字取得 |
MikamiUitOpen | 0:c8e52f514e03 | 37 | pc_.putc(ch); // 同じ文字をターミナルへ送信 |
MikamiUitOpen | 0:c8e52f514e03 | 38 | if (ch == '\r') // "Enter" を受信した場合は |
MikamiUitOpen | 0:c8e52f514e03 | 39 | { |
MikamiUitOpen | 0:c8e52f514e03 | 40 | pc_.putc('\n'); // "LF" も送信する |
MikamiUitOpen | 0:c8e52f514e03 | 41 | |
MikamiUitOpen | 0:c8e52f514e03 | 42 | char *endptr; |
MikamiUitOpen | 0:c8e52f514e03 | 43 | val = strtof(rxBuf_.c_str(), &endptr); |
MikamiUitOpen | 0:c8e52f514e03 | 44 | if (*endptr == NULL) |
MikamiUitOpen | 0:c8e52f514e03 | 45 | rtn = true; |
MikamiUitOpen | 0:c8e52f514e03 | 46 | else |
MikamiUitOpen | 0:c8e52f514e03 | 47 | pc_.printf("不正な入力です.\r\n? "); |
MikamiUitOpen | 0:c8e52f514e03 | 48 | rxBuf_ = ""; |
MikamiUitOpen | 0:c8e52f514e03 | 49 | } |
MikamiUitOpen | 0:c8e52f514e03 | 50 | else |
MikamiUitOpen | 0:c8e52f514e03 | 51 | rxBuf_ += ch; |
MikamiUitOpen | 0:c8e52f514e03 | 52 | |
MikamiUitOpen | 0:c8e52f514e03 | 53 | return rtn; |
MikamiUitOpen | 0:c8e52f514e03 | 54 | } |
MikamiUitOpen | 0:c8e52f514e03 | 55 | |
MikamiUitOpen | 0:c8e52f514e03 | 56 | // ターミナルに出力する |
MikamiUitOpen | 0:c8e52f514e03 | 57 | void printf(const string str) { pc_.printf("%s", str.c_str()); } |
MikamiUitOpen | 0:c8e52f514e03 | 58 | |
MikamiUitOpen | 0:c8e52f514e03 | 59 | private: |
MikamiUitOpen | 0:c8e52f514e03 | 60 | Serial pc_; |
MikamiUitOpen | 0:c8e52f514e03 | 61 | string rxBuf_; |
MikamiUitOpen | 0:c8e52f514e03 | 62 | }; |
MikamiUitOpen | 0:c8e52f514e03 | 63 | } |
MikamiUitOpen | 0:c8e52f514e03 | 64 | #endif // TERMINAL_INPUT_HPP |