M
M
MWX Library
検索…
.get_stream_helper()
uint8_t型のsmplbuf配列を参照したstream_helper ヘルパーオブジェクトを経由して、mwx::streamによる演算子やメソッドを用います。
1
smplbuf_u8<32> b;
2
auto&& bs = b.get_stream_helper(); // ヘルパーオブジェクト
3
4
// データ列の生成
5
uint8_t FOURCHARS[]={'A', 'B', 'C', 'D'};
6
bs << FOURCHARS;
7
bs << ';';
8
bs << uint32_t(0x30313233); // "0123"
9
bs << format(";%d", 99);
10
11
Serial << b << crlf; // Serialへの出力は smplbuf_u8<32> クラス経由で
12
13
//結果: ABCD;0123;99
Copied!
ヘルパーオブジェクトの型名は長くなるためauto&&により解決しています。このオブジェクトに対して<<演算子などmwx::streamで定義されたインタフェースを利用できます。
生成されたヘルパーオブジェクトbsは生成時に大本の配列bの先頭位置から読み書きを始めます。配列の末尾の場合はappend()によりデータを追加します。読み書きを行うたびに位置は次に移動していきます
ヘルパー関数では読み出し用の>>演算子が利用できます。
1
//..上例の続き
2
// ABCD;0123;99 <- bに格納されている
3
4
//読み出しデータ格納変数
5
uint8_t FOURCHARS_READ[4];
6
uint32_t u32val_read;
7
uint8_t c_read[2];
8
9
// >>演算子で読み出す
10
bs.rewind(); //ポジションを先頭に巻き戻す
11
bs >> FOURCHARS_READ; //4文字
12
bs >> mwx::null_stream(1); //1文字スキップ
13
bs >> u32val_read; //32bitデータ
14
bs >> mwx::null_stream(1); //1文字スキップ
15
bs >> c_read; //2文字
16
17
// 結果表示
18
Serial << crlf << "4chars=" << FOURCHARS_READ;
19
Serial << crlf << format("32bit val=0x%08x", u32val_read);
20
Serial << crlf << "2chars=" << c_read;
21
22
// 4chars=ABCD
23
// 32bit val=0x30313233
24
// 2chars=99
Copied!
最終更新 1mo ago
PDFに出力
リンクのコピー