シリアル通信アプリ 書式モード(アスキー)の 0xDB コマンド
0xDB
コマンドを使うことで、UART接続されたデバイスから動的に設定を行えます。入力の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 自身を示す0xDB のみ |
1 | uint8 | コマンド番号 | 後述の値から選択 |
2 | [uint8] | パラメータ | 設定値を示す長さ\(N\)のバイト列(オプション) |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
コマンド番号の一覧
機能 | |
---|---|
0xF0 | ACKの有効化 |
0xF1 | 端末情報の取得 |
0xF2 | 端末設定の適用 |
0xF3 | 端末設定の取得 |
0xF8 | 端末の制御 |
0xFD | 端末設定の消去 |
0xFE | 端末設定の保存 |
0xFF | 端末のリセット |
0xF0
:ACKの有効化
ACK 応答の要求を行います。
パラメータはありません。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF0 のみ |
2 | uint8 | データ | 0x01 のみ |
uint8 | チェックサム | 0x34 :LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xF1
:端末情報の取得
アドレス等の情報を表示します。起動時にも出力されます。
パラメータはありません。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF1 のみ |
2 | uint32 | アプリケーションID | |
6 | uint32 | バージョン番号 | 1.4.7 なら00010407 |
10 | uint8 | 論理デバイスID | |
11 | uint32 | シリアルID | |
15 | uint8 | サイレントモードの状態 | 有効1 , 無効0 |
16 | uint8 | ネットワークの状態 | UP1 , DOWN0 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xF2
:端末設定の適用
設定を適用します。
応答の書式
成功した場合
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | [uint8] | 設定内容 | 長さ\(N\)の識別子とデータの繰り返し |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
失敗した場合
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | uint8 | エラー | 0xFF のみ |
uint8 | チェックサム | 0x33 :LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xF3
:端末設定の取得
設定を取得します。
応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF3 のみ |
2 | [uint8] | 設定内容 | 識別子とデータの繰り返し |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xF8
:端末の制御
起動時にサイレントモードを有効としていた場合に、これを解除します。
0x10
を指定してください。応答の書式
# | データ | 内容 | 備考 |
---|---|---|---|
char | ヘッダ | : のみ | |
0 | uint8 | 送信先の論理デバイスID | 0xDB のみ |
1 | uint8 | コマンド番号 | 0xF8 のみ |
2 | uint8 | データ | 0x11 のみ |
3 | uint8 | 状態 | 解除済み1 , 未解除0 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D /'\r' ) | |
char | フッタ | LF (0x0A /'\n' ) |
0xFD
:端末設定の消去
設定を初期化し、本体をリセットします。
パラメータおよび応答はありません。
0xFE
:端末設定の保存
適用した設定を保存し、本体をリセットします。
パラメータおよび応答はありません。
0xFF
:端末のリセット
適用した設定を破棄し、本体をリセットします。
パラメータおよび応答はありません。
パラメータの一覧(0xF2
/0xF3
)
0xF2
:端末設定の適用 および 0xF3
:端末設定の取得 のパラメータは、識別子とデータ(ビッグエンディアン)の繰り返しで表現します。
識別子 | データ | 内容 |
---|---|---|
0x00 | uint32 | アプリケーションID |
0x01 | uint32 | 周波数チャネルマスク |
0x02 | uint16 | 再送回数と出力 |
0x03 | uint8 | 論理デバイスID |
0x04 | uint8 | 役割 |
0x05 | uint8 | 中継レイヤ |
0x06 | uint8 | 通信モード |
0x07 | uint32 | ボーレート |
0x08 | uint8 | パリティ |
0x09 | uint8 | 暗号化機能 |
0x0A | [uint8] | 暗号化キー |
0x0C | uint16 | 区切り文字 |
0xFF | uint8 | エラー |
0x00
:アプリケーションID
アプリケーションIDを指定します。
0x01
:周波数チャネルマスク
周波数チャネルのビットマスクを指定します。
使用するチャネルのビットを立てます。例えば、11チャネルを使う場合は1<<11
です。
0x02
:再送回数と出力
電波の送信出力と、透過モードおよびヘッダ付き透過モードにおいてパケットを追加で送信する回数を指定します。
下位の1バイトのみを使用します。そのうち上位の4ビットが再送回数(0
-9
)、下位の4ビットが送信出力(0
-3
)です。例えば、8回再送/出力3 であれば 0x0083
です。
0x03
:論理デバイスID
論理デバイスIDを指定します。
0x04
:役割
子機のみ有効です。以下の値を指定します。通常はネットワーク層を利用しない配送方式を選択してください。
ネットワーク層を利用しない配送方式
0
:通常の指定(親機または子機)1
-3
:中継子機(論理デバイスIDを1
-100
または120
とします)1
-3
の数値は最大中継段数を指します。最大中継段数まで再送を繰り返す方式のため、中継機の配置や数によっては重複したパケットを中継します。
ネットワーク層を利用する配送方式
11
:親機12
:中継機13
:子機
80
を足してください。例えば 93
は「ネットワーク層利用かつサイレントモード」です。0x05
:中継レイヤ
中継レイヤの番号です。中継機は中継レイヤ数の上位(より小さい値)の中継機・親機への接続を試みます。役割を12
としているときにだけ有効です。
0x06
:通信モード
0
:透過モード1
:書式モード(アスキー)2
:書式モード(バイナリ)3
:チャットモード4
:ヘッダ付き透過モード
0x07
:ボーレート
UART ボーレートを指定します。
0x08
:パリティ
以下の設定の組み合わせにおいて、設定値の総和を指定します。
- Bit
0
:8Bit8
:7Bit
- Parity
0
:None1
:Odd2
:Even
- Stop
0
:STOP 14
:STOP 2
例えば、7-E-1 なら 8+2+0=10(0xA)
を指定します。
0x09
:暗号化機能
暗号化機能の有無を指定します。
0
:無効1
:AES128bit の暗号化を有効
0x0A
:暗号化キー
16バイトの暗号化キーを指定します。
インタラクティブモードでは設定できないバイナリ列を格納できます。この場合、インタラクティブモードの表示が崩れる場合があります。
0x0C
:区切り文字
区切り文字列の指定を行います(0x00
-0xFF
)。
サイレントモード
0xDB
コマンドによる設定を完了してから受信を始める際に利用します。設定方法
インタラクティブモードで以下の設定を行います。
r: Role
に80
を足しておく。例えば、通常の親機や子機なら80
とする。m: UART mode
を書式モード(A
/B
)としておく。
動作確認
起動直後に出力される DB F1 応答の内容を確認します。
解除方法
DB F8 要求を行います(アスキー形式::DBF8101D<CR><LF>
)。
注意点
- サイレントモードの再設定はできません。
- サイレントモードが有効のときに送信コマンドを入力した場合の動作は未定義です。