parseFmt.py parseFmt_*.py
TWELITE シリアル書式パーサー
最終更新
TWELITE シリアル書式パーサー
最終更新
class FmtBase
書式パーサーの基底クラスで共通手続きを定義する。これを継承した FmtAscii (アスキー形式 ASCII形式), FmtBinary (バイナリ形式 Binary形式) を利用する。
書式パーサーは、シリアル入力を想定し、アスキー形式の場合は1行単位でバイナリ形式の場合は1バイト単位で入力系列を解釈し、その系列が書式で定義されるヘッダ、フッタ、チェックサムを満足した時、解釈の完了とし、ヘッダ、フッタを除いた内容(ペイロード)を格納する。
process(c)
入力文字列の解釈を行う。解釈後は is_complete()
が true
を返した場合、解釈が成功し get_payload()
によりペイロードを得ることができる。ペイロードは続く process()
処理などを実行すると内容を保証しないため、解釈終了後に速やかに利用します。
続けて別の系列を解釈したい場合は、そのまま process()
を実行する。
なし
is_comp()
process()
処理後に呼び出し、書式解釈の完了状況を知らせる。true を得た場合は get_peyload()
または get_payload_in_str()
メソッドにより、ペイロードを取得する。
続く process()
などの処理により、内部格納されるペイロードは初期化や破壊されるため、速やかにデータをコピーします。
なし
get_payload()
ペイロードを返す。
なし
ヘッダやフッタが含まれないペイロード部を list型 バイト列として返します。
reinit()
明示的に内部を初期状態にします。
なし
なし
内部で利用する目的でいくつかのメソッドが定義されています。詳細はソースコードを参照してください。
str
型の系列 a
を解釈し、pay
にペイロード情報保存します。pay
には [ 0x78, 0x80, 0x01, ... , 0x00 ]
が格納されます。
1バイト単位の解釈
バイナリの系列 b
について、1バイトごと process()
メソッドにより系列の解釈を進めます。終端の 0x04
を投入した時点で、解釈が完了しペイロードが pay
に保管されます。
パラメータ
内容
c
解釈したい入力系列。1バイト単位の解釈と系列単位の解釈の2種類に対応する。1バイト単位の入力では、int型のアスキーコード、str型、bytes型、list型の長さ1の系列。系列単位の入力では list 型、str型、bytes型の1系列を処理する。データに複数系列ある場合や途中で切れている場合は処理できない。
値
内容
true
解釈に成功した。ペイロードが利用できる。
false
解釈に失敗した、または、書式の途中である。