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