Nucleo ボードの USB コネクタに対応するシリアルポート受送信割込みで,複数のキャラクタ受送信をサポ-トするクラス.   このライブラリを登録した際のプログラム: Demo_F446_AD_DA_Ctrl.

Dependents:   F446_FunctionGenerator F446_UpSampling_GraphicEqualizer F446_UpSampling_ReverbSystem F446_UpSampling_FrqShifter_Weaver ... more

Revision:
5:151d281afa55
Parent:
4:fb847a82f735
Child:
6:8084247806a4
--- a/SerialRxTxIntr.cpp	Tue Sep 18 00:13:29 2018 +0000
+++ b/SerialRxTxIntr.cpp	Fri Sep 21 06:57:31 2018 +0000
@@ -2,71 +2,66 @@
 //  Nucleo ボードの USB コネクタに対応するシリアルポート受送信割込みで
 //  複数のキャラクタ受送信をサポ-トするクラス
 //
-//  2018/09/18, Copyright (c) 2018 MIKAMI, Naoki
+//  2018/09/21, Copyright (c) 2018 MIKAMI, Naoki
 //-------------------------------------------------------------
 
 #include "SerialRxTxIntr.hpp"
 
 namespace Mikami
 {
-    // コンストラクタ
-    SerialRxTxIntr::SerialRxTxIntr(int maxChar, int baud)
-        : pc_(USBTX, USBRX, baud), tx_(pc_), buffer2_(""), echoOn_(false)
-    {
-        rxMax_ = maxChar;
-        pc_.format();    // default: 8 bits, nonparity, 1 stop bit
-        pc_.attach(callback(this, &SerialRxTxIntr::RxIsr));
-    }
-    
-    // メッセージの終了であればそのメッセージを保存し true を返す
-    bool SerialRxTxIntr::IsEol()
-    {
-        if (!eol_) return false;
+	// コンストラクタ
+	SerialRxTxIntr::SerialRxTxIntr(int maxChar, int baud)
+    	: pc_(USBTX, USBRX, baud), tx_(pc_), RX_MAX_(maxChar),
+	      eol_(false), rxBuffer_(""), buffer2_(""), echoOn_(false)
+	{
+    	pc_.format();    // default: 8 bits, nonparity, 1 stop bit
+	    pc_.attach(callback(this, &SerialRxTxIntr::RxIsr));
+	}
 
-        eol_ = false;
-        buffer2_ = rxBuffer_;   // メッセージの保存
-        rxBuffer_ = "";         // 受信バッファをクリア
-        return true;
-    }
+	// メッセージの終了であればそのメッセージを保存し true を返す
+	bool SerialRxTxIntr::IsEol()
+	{
+	    if (!eol_) return false;
 
-    // 文字列の送信
-    //      lf が false の場合は,最後に '\n' を送信しない
-    void SerialRxTxIntr::Tx(string str, bool lf)
-    {
-        for (int n=0; n<str.size(); n++)
-            tx_.TxWrite(str[n]);
-        if (lf) tx_.TxWrite('\n');
-    }
+    	eol_ = false;
+	    buffer2_ = rxBuffer_;   // メッセージの保存
+    	rxBuffer_ = "";         // 受信バッファをクリア
+	    return true;
+	}
 
-    // シリアル・ポートの受信割り込みに対する割り込みサービス・ルーチン
-    void SerialRxTxIntr::RxIsr()
-    {
-        unsigned char chr = pc_.getc();
-        if (echoOn_)    // エコーバックが有効な場合
-        {
-            tx_.TxWrite(chr);   // エコーバック
-            if (chr == '\r') tx_.TxWrite('\n');
-        }
-        // "\r" を受信した場合はメッセージの終了とする
-        // "\r" は rxBuffer_ に追加されない
-        if (chr == '\r') eol_ = true;
-        else             rxBuffer_ += chr;
+	// 文字列の送信
+	//      lf が false の場合は,最後に '\n' を送信しない
+	void SerialRxTxIntr::Tx(string str, bool lf)
+	{
+    	for (int n=0; n<str.size(); n++)
+        	tx_.TxWrite(str[n]);
+	    if (lf) tx_.TxWrite('\n');
+	}
 
-        // 受信するメッセージの文字数のチェック
-        if (rxBuffer_.size() > rxMax_)
-        {
-            // 文字数オーバーの処理,ボードの LED を高速に点滅する
-            DigitalOut myLed(LED1);
-            while (true)
-            {
-                myLed = !myLed;
-                wait_ms(50);
-            }
-        }
-    }
-    
-    // static メンバの実体の宣言/初期化
-    int SerialRxTxIntr::rxMax_;
-    __IO bool SerialRxTxIntr::eol_ = false;
-    string SerialRxTxIntr::rxBuffer_ = "";
-}
+	// シリアル・ポートの受信割り込みに対する割り込みサービス・ルーチン
+	void SerialRxTxIntr::RxIsr()
+	{
+    	unsigned char chr = pc_.getc();
+	    if (echoOn_)            // エコーバックが有効な場合
+    	{
+        	tx_.TxWrite(chr);   // エコーバック
+	        if (chr == '\r') tx_.TxWrite('\n');
+    	}
+	    // "\r" を受信した場合はメッセージの終了とする
+    	// "\r" は rxBuffer_ に追加されない
+    	if (chr == '\r') eol_ = true;
+	    else             rxBuffer_ += chr;
+
+    	// 受信するメッセージの文字数のチェック
+	    if (rxBuffer_.size() > RX_MAX_)
+    	{
+	        // 文字数オーバーの処理,ボードの LED を高速に点滅する
+    	    DigitalOut myLed(LED1);
+        	while (true)
+	        {
+    	        myLed = !myLed;
+        	    wait_ms(50);
+	        }
+    	}
+	}
+}
\ No newline at end of file