アスキー形式

書式モードでコマンド表現されたバイト列をアスキー形式に変換します。

A: [送受信したいデータ]
 ↓↑
B: [コマンド表現 [A: ] ]
 ↓↑
C: 系列Bをアスキー形式またはバイナリ形式に変換
   [形式ヘッダ [B: [A: ] ] 終端]
 ↓↑
マイコンのUART入出力

例えば、コマンド表現で 00A01301FF123456 (子機から親機に ACK 付きで 123456 を送信する)をアスキー形式で表現すると、以下のようになります。先頭は : で B1 がチェックサム、終端は [CR][LF] となります。

:00A01301FF123456B1[CR][LF]

形式の定義

 

  元データのバイト数 表現形式におけるバイト数 解説
ヘッダ   1 ':' (0x3A) コロンを指定します。
データ部 N 2N 元データの各バイトをアスキー文字列2文字(A-F は大文字)で表現します。
例えば 0x1F は '1' (0x31) 'F' (0x46) と表現します。
チェックサム   2 データ部の各バイトの和を8ビット幅で計算し2の補数をとります。つまりデータ部の各バイトの総和+チェックサムバイトを8ビット幅で計算すると0にります。
チェックサムバイトをアスキー文字列2文字で表現します。
例えば 00A01301FF123456 では 0x00 + 0xA0 + ... + 0x56 = 0x4F となり、この二の補数は0xB1 です。(つまり 0x4F + 0xB1 = 0)
フッタ   2 [CR] (0x0D) [LF] (0x0A) を指定する。

省略

送信コマンドを入力する時に限ってチェックサムとフッタを省略し替わりに 'X' を指定できます。

:00A01301FF123456B1[CR][LF] ⇒ :00A01301FF123456X