mwx::stream
入出力ストリーム
入出力ストリームを処理する上位クラスです。
CRTP (Curiously Recurring Template Pattern) 手法を用いたポリモーフィズムにより、いくつかのクラス(
Serial, Wire, SPI, smplbuf
) にインタフェースを提供します。CRTP では下位クラスは
template class Derived : public stream<Derived>;
のように定義し、上位クラスからも下位クラスのメソッドを参照します。
本クラスでは
print
メソッド、<<
演算子などの共通処理の定義を行い、下位クラスで実装したwrite()
メソッドなどを呼び出すことで、仮想関数を用いるのと近い実装を行っています。
インタフェース(下位クラスで実装)
下位クラスでは、以下に列挙する関数を実装します。
available()
入力が存在する場合は 1、存在しない場合は 0 を返します。
パラメータ | 解説 |
戻り値 | 0: データなし 1:データあり |
本実装の戻り値はバッファ長ではありません。
flush()
出力をフラッシュ(出力完了まで待つ)します。
read()
ストリームより1バイトデータを入力します。データが存在しない場合は -1
を戻します。
write()
ストリームに1バイト出力します。
パラメータ | 解説 |
| 出力したい文字。 |
戻り値 | 出力が成功すれば 1、失敗すれば 0。 |
vOutput()
1バイト出力を行うスタティック関数です。クラスメソッドではないため、メンバー変数等の情報は利用できません。替わりにパラメータとして渡される vp にクラスインスタンスへのポインタを渡します。
このスタティック関数は内部的に利用されfctprintf()
の1バイト出力関数として関数ポインタが渡ります。これを用いてprint
メソッドなどを実装しています。
パラメータ | 解説 |
| 出力したい文字 |
| クラスインスタンスへのポインタ 通常は、元のクラスにキャストして write() メソッドを呼び出す |
インタフェース
putchar()
1バイト出力します。
print(), println()
各種整形出力を行います。
パラメータ | 解説 |
| 整形出力したい数値型 |
| 出力形式 BIN 二進数 / OCT 8進数 / DEC 10進数 / HEX 16進数 |
| 小数点以下の桁数 |
戻り値 | 書き出したバイト数 |
printfmt
printf 形式での出力を行います。
TWESDK/TWENET/current/src/printf/README.md 参照
operator <<
引数型 | 解説 |
| 1バイト出力 (数値としてフォーマットはしない) |
| 整数出力 (printf の "%d") |
| 数値出力 (printf の "%.2f") |
| 1バイト出力する(char型と同様) |
| 2バイト出力する(ビッグエンディアン順) |
| 4バイト出力する(ビッグエンディアン順) |
| printf 形式での出力 |
| 改行 CRLF の出力 |
| 出力のフラッシュ |
| 数値型をビッグエンディアン順で出力する。(右辺値) |
| バイト型の |
|
|
|
|
バイト列として出力する際は、uint8_t, uint16_t, uint32_t
型にキャストします。また文字列として数値出力する場合は明示的にint
形にキャストするようにしてください。
operator >>
入力処理を行います。
setup()
内では実行できません。
引数型 | 解説 |
| 1バイト入力 |
| 2バイト入力(ビッグエンディアン順) |
| 4バイト入力(ビッグエンディアン順) |
| nバイト読み捨てる |
set_timeout(), get_error_status(), clear_error_status()
入力タイムアウトとエラーを管理します。set_timeout()
によりタイムアウト時間を指定し、>>演算子により入力処理を行います。所定時間内までに入力が得られない場合は get_error_status()
によりエラー値を読み出せます。clear_error_status()
によりエラー状況をクリアします。
引数型 | 解説 |
| 1/100秒単位でタイムアウト時間を設定します |
エラー値
値 | 意味 |
0 | エラーなし |
1 | エラー状況 |
最終更新