begin()
の初期化のパラメータで渡す書式の種別です。ここではアスキー形式とバイナリー形式の2種類があります。uint8_t PARSER::ASCII = 1
uint8_t PARSER::BINARY = 2
00A01301FF123456
をアスキー形式で表現すると、以下のようになります。先頭は :
で B1
がチェックサム、終端は [CR:0x0d][LF:0x0a]
となります。:00A01301FF123456B1[CR][LF]
X
に置き換えます。文字化けによる誤ったデータ系列には弱くなりますが、実験などでデータを送付したいときに便利です。:00A01301FF123456X
:
(0x3A) コロンを指定します。1
(0x31) F
(0x46) と表現します。00A01301FF123456
では 0x00 + 0xA0 + ... + 0x56 = 0x4F となり、この二の補数は0xB1 です。(つまり 0x4F + 0xB1 = 0x00)00A01301FF123456
をバイナリ形式で表現すると、以下のようになります。0xA5 0x5A 0x80 0x08 0x00 0xA0 0x13 0x01 0xFF 0x12 0x34 0x56 0x3D
0xA5 0x5A
を指定します。0x80 0x08
を指定します。00A01301FF123456
なら 0x00 xor 0xA0 xor ... 0x56 = 0x3D となります。0x04
(EOT) が付加されます。serparser_attach
begin()
にて指定するserparser_local<N>
serparser_heap
begin()
メソッドのパラメータで指定したサイズをヒープに確保するbegin()
メソッドを呼び出します。>>
演算子参照)smplbuf<uint8_t, alloc>
型となります。:00112233X
のような系列を入力として受け取りますが : 0 0 ... X
の順で1バイトずつ入力し、最後の X
を入力した時点で書式の解釈を完了し、完了済みと報告します。parse()
のパラメータは入力バイト、戻り値は解釈完了であればtrue
を戻します。parse()
で読み出し完了になったとき、次のparse()
を実行すると読み出し中のステータスに戻ります。true
ならparse()
により読み出しが完了した状態で、false
なら解釈中となります。