Nucleo ボードの USB コネクタに対応するシリアルポート受送信割込みで,複数のキャラクタ受送信をサポ-トするクラス. このライブラリを登録した際のプログラム: Demo_F446_AD_DA_Ctrl.
Dependents: F446_FunctionGenerator F446_UpSampling_GraphicEqualizer F446_UpSampling_ReverbSystem F446_UpSampling_FrqShifter_Weaver ... more
Diff: SerialRxTxIntr.cpp
- Revision:
- 13:deeef404ff49
- Parent:
- 9:a90a9abeaea0
--- a/SerialRxTxIntr.cpp Mon Jan 27 07:43:38 2020 +0000 +++ b/SerialRxTxIntr.cpp Wed Feb 05 08:45:08 2020 +0000 @@ -2,53 +2,53 @@ // Nucleo ボードの USB コネクタに対応するシリアルポート受送信割込みで // 複数のキャラクタ受送信をサポ-トするクラス // -// 2019/11/23, Copyright (c) 2018 MIKAMI, Naoki +// 2020/02/05, Copyright (c) 2020 MIKAMI, Naoki //------------------------------------------------------------- #include "SerialRxTxIntr.hpp" namespace Mikami { - // コンストラクタ - 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)); - } + // コンストラクタ + 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)); + } - // メッセージの終了であればそのメッセージを保存し true を返す - bool SerialRxTxIntr::IsEol() - { - if (!eol_) return false; + // メッセージの終了であればそのメッセージを保存し true を返す + bool SerialRxTxIntr::IsEol() + { + if (!eol_) return false; - eol_ = false; - buffer2_ = rxBuffer_; // メッセージの保存 - rxBuffer_ = ""; // 受信バッファをクリア - return true; - } + 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; + // シリアル・ポートの受信割り込みに対する割り込みサービス・ルーチン + void SerialRxTxIntr::RxIsr() + { + unsigned char chr = pc_.getc(); + if (echoOn_) // エコーバックが有効な場合 + { + tx_.TxChar(chr); // エコーバック + if (chr == '\r') tx_.TxChar('\n'); + } + // "\r" を受信した場合はメッセージの終了とする + // "\r" は rxBuffer_ に追加されない + if (chr == '\r') eol_ = true; + else rxBuffer_ += chr; - // 受信するメッセージの文字数のチェック - if (rxBuffer_.size() > RX_MAX_) - { - char ch[32]; - sprintf(ch, "Exceeded %d characters", RX_MAX_); - mbed_assert_internal(ch, __FILE__, __LINE__); - } - } + // 受信するメッセージの文字数のチェック + if (rxBuffer_.size() > RX_MAX_) + { + char ch[32]; + sprintf(ch, "Exceeded %d characters", RX_MAX_); + mbed_assert_internal(ch, __FILE__, __LINE__); + } + } } \ No newline at end of file