出力のカスタマイズ
ヘッダ付き透過モード(E)の出力をカスタマイズ
インタラクティブモードにより、ヘッダ付き透過モード(E)の受信側出力をカスタムできます。
ヘッダ付き透過モード (E) の出力はインタラクティブモードのh: set header format
で設定できます。
一番簡単な書式は*\n
で、送信されたデータそのものを表示し、CRLFの改行コードを付与します。
--- CONFIG/TWE UART APP V1-04-5/SID=0x810a479c/LID=0x01 -E ---
...
h: set header format [*\n]
受信側で上記の設定を行うと、以下のように表示されます。
[送信側] HELLO または HELLO
[受信側] HELLO
特殊文字を含めることで様々な出力が可能です。
文字 | 意味 |
---|---|
* | 送信文字列 |
&hl | 任意の文字を16進数で指定 (例:&20 →0x20空白) |
< | チェックサム計算開始位置を設定する(設定しない場合は出力の先頭) |
> | チェックサム計算終了位置を指定する(v1.4.6以降。それ以前のバージョンは無視されます) |
\
(バックスラッシュ, ¥)に続く文字
\n | CRLF (0x0d 0x0a) の出力 |
\t | TAB の出力 |
\* | * の出力 |
\% | % の出力 |
\< | < の出力 |
\> | > の出力 |
\& | & の出力 |
%
に続く文字
%A | 送信元アドレス(32bit)の出力(8桁16進数) |
%a | 送信元アドレス(32bit)の出力(10桁10進数) |
%I | 送信元論理アドレス(8bit)の出力(2桁16進数) |
%i | 送信元論理アドレス(8bit)の出力(3桁10進数) |
%T | 現在のシステム時間(秒)の出力(4桁16進数) |
%t | 現在のシステム時間(秒)の出力(5桁10進数) |
%S | 送信元が設定した続き番号の出力(2桁16進数) |
%s | 送信元が設定した続き番号の出力(3桁10進数) |
%Q | 受信時の電波強度を出力(2桁16進数) |
%q | 受信時の電波強度を出力(3桁10進数) |
%X | チェックサムの出力(2桁16進数) |
%x | チェックサムの出力(3桁10進数) |
チェックサムの計算
チェックサムは開始位置(<で指定する場合はその場所から、なければ出力の先頭)から%X
,%x
の出力直前までをXOR(排他的論理和)にて計算します。
h: set header format [;%I;*;%X]
上記のように設定した場合、
受信側で上記の設定を行うと、以下のように表示されます。
[送信側] HELLO または HELLO
[受信側] ;000;HELLO;49
送信側のアドレスはでHELLOという文字が届きチェックサムが0x49です。
チェックサムの計算範囲は ;000;HELLO; です。
計算プログラム例
#include <stdio.h>
int main() {
unsigned char x = 0;
char *p = ";000;HELLO;";
while(*p) {
x ^= *p;
p++;
}
printf("%s -> %02x\n", argv[1], x);
}
// ;000;HELLO; -> 49