/

シリアル通信アプリの通信モード

各通信モードの説明
シリアル通信アプリ(App_Uart)には、5つの通信モードがあります。

通信モードの一覧

各モードは、インタラクティブモードによって切り替えます(一部のモードはピン入力にて設定可能)。

IDモード
A書式モード(アスキー)
B書式モード(バイナリ)
Cチャットモード
D透過モード
Eヘッダ付き透過モード

初期状態はヘッダ付き透過モードです。

A:書式モード(アスキー)

送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。

16進数で表すデータはアスキー文字列で表現します。

送信側の入力受信側の出力
簡易形式/拡張形式のデータ簡易形式/拡張形式のデータ

TWELITE UART では、SET ピンを GND へ接続して起動すると本モードが有効となります。

データを表現する形式は2種類あります。

  • 簡易形式:論理デバイスIDだけを使用。超簡単!標準アプリのUART伝送機能と互換性あり
  • 拡張形式:論理デバイスIDに加えて、シリアルIDや再送回数などの送信オプションを使用できる

例えば、5バイトのバイナリデータ 0x48 0x45 0x4C 0x4C 0x4F は、簡易形式を使って次のように送信できます。

【送信側】

:000148454C4C4F8B  <- 入力
:DBA1800103  <- 出力

【受信側】

:780148454C4C4F13  <- 出力

書式モードでは、アプリケーションIDなどの設定をインタラクティブモードだけでなく UART によるコマンド(アスキー形式)によって動的に適用できます。

B:書式モード(バイナリ)

送信側の端末へ特定の書式に従ったデータを入力すると、受信側の端末も特定の書式に従ったデータを出力します。

16進数で表すデータはそのままバイナリ形式で表現します。

送信側の入力受信側の出力
簡易形式/拡張形式のデータ簡易形式/拡張形式のデータ

TWELITE / TWELITE DIP では、EX1 ピンを GND へ接続して起動すると本モードが有効となります。

書式モード(アスキー)と同様に、データを表現する形式は2種類あります。

例えば、5バイトのバイナリデータ 0x48 0x45 0x4C 0x4C 0x4F は、簡易形式を使って次のように送信できます。

【送信側】

0xA5 0x5A 0x00 0x07 0x00 0x01 0x48 0x45 0x4C 0x4C 0x4F 0x43 0x04    <- 入力
0xA5 0x5A 0x00 0x04 0xDB 0xA1 0x80 0x01 0xFB 0x04  <- 出力

【受信側】

0xA5 0x5A 0x00 0x07 0x78 0x01 0x48 0x45 0x4C 0x4C 0x4F 0x3B 0x04  <- 出力

書式モードでは、アプリケーションIDなどの設定をインタラクティブモードだけでなく UART によるコマンド(バイナリ形式)によって動的に適用できます。

C:チャットモード

テキストチャットを実現します。

送信側の入力受信側の出力
任意の文字列補助情報+任意の文字列

プロンプトの表示とエコーバック(入力した文字の出力)を行います。すべての端末は子機として、同報通信を行います。

例えば、ある端末から他の端末へ Hello という文字列を送信する場合は、次のように振る舞います。

【送信側】

810A4778:0> Hello  <- 入力
810A4778:1>  <- 出力

【受信側】

[810A4778:0] Hello  <- 出力
82018CA0:0>  <- 出力

上記の例ではプロンプトにシリアルIDを表示していますが、任意のハンドル名を使用することもできます。

D:透過モード

送信側の端末へ任意のデータを入力すると、受信側の端末は受信したデータをそのまま出力します。

送信側の入力受信側の出力
任意のデータ任意のデータ

書式を必要としないため、既存の UART 通信を簡単に無線化できます。

一方で、データの区切りがあいまいになってしまうほか、受信側の出力から送信元を判別できないといった欠点があります。

初期状態では、送信側へ入力されたデータをCRLFで区切り、CRLF よりも前のデータを送信します。

例えば、送信側の端末へ Hello<Enter> と入力すると、受信側の端末はそのまま Hello を出力します。

【送信側】

Hello  <- 入力

【受信側】

Hello  <- 出力

E:ヘッダ付き透過モード

送信側の端末へ任意のデータを入力すると、受信側の端末は受信した内容に特定の書式で補助情報を付加したデータを出力します。

送信側の入力受信側の出力
任意のデータ任意のデータ+補助情報

初期状態では、送信側へ入力されたデータをCRLFで区切り、CRLF よりも前のデータを送信します。

例えば、送信側の端末へ Hello<Enter> と入力すると、受信側の端末は補助情報を含んだ書式で Hello を出力します。送信側の端末も送信完了といったメッセージを伝える書式を出力します。

【送信側】

Hello  <- 入力
;U;00004;219;0x820163B2;000;000;0,1,Hel...;6E;  <- 出力

【受信側】

;U;00003;000;0x820163B2;255;000;Hello;42;  <- 出力

受信側が出力する補助情報は、送信元のアドレスや受信時の電波強度、チェックサム等を含みます。補助情報の書式はカスタマイズできます。


シリアル通信アプリの書式モード(アスキー形式)

送受信双方の出力にヘッダを付加するモード(アスキー形式)

シリアル通信アプリの書式モード(バイナリ形式)

送受信双方の出力にヘッダを付加するモード(バイナリ形式)

シリアル通信アプリのチャットモード

プロンプト表示とエコーバックを行うモード

シリアル通信アプリの透過モード

純粋にUARTを無線化するモード

シリアル通信アプリのヘッダ付き透過モード

受信側の出力にだけヘッダを付加するモード