構造体ルールの編集
概要
バイナリ構造応答のルール 1 件を設定します。受信データを構造体定義でパースし、フィールド値の条件がすべて揃ったときに指定の応答を返します。セッション画面の「バイナリ構造応答」タブで「追加」または「編集」をクリックすると開きます。
この画面は開いたままセッション画面を操作できます。受信ログを見ながらフィールド条件や応答テンプレートを組み立てられます。ウィンドウの移動・サイズ変更ができ、大きさは次に開いたときも引き継がれます。
同じルールの編集画面は 1 つだけ開きます(開いている状態でもう一度「編集」を押すと手前に出ます)。「追加」の画面も 1 つのセッションにつき 1 つだけです。
変更が反映されるのは「OK」を押したときだけです。「キャンセル」または右上の × で閉じると、入力した内容は破棄されて元の設定に戻ります。何か入力したあとに閉じようとすると「編集内容を破棄しますか?」と確認します。
対象の構造体定義を選んでいないと「OK」で確定できません(理由を知らせて画面は開いたままになります)。編集中に構造体定義の側で対象の定義を削除した場合も同じです。
編集中のルールを一覧から削除しようとすると、削除してよいか確認します。続けると編集画面は保存されずに閉じます。
画面項目一覧
基本設定
| 項目 | 説明 |
|---|---|
| 名前 | ルールの表示名 |
| 優先度 | 評価順。小さい値ほど先に評価され、最初にマッチしたルールの応答が使われる |
| 応答遅延(ms) | マッチしてから応答を送るまでの待ち時間(ミリ秒)。0 で即応答 |
対象構造体定義
| 項目 | 説明 |
|---|---|
| 対象構造体定義 | このルールの条件判定に使う構造体定義をプロジェクトのライブラリから選択する |
フィールド条件テーブル
ここに並べた条件をすべて満たした(AND)ときにマッチとなります。
| 列 | 説明 |
|---|---|
| フィールド | 条件に使う構造体のフィールド名。定義のフィールド名と一致させる |
| 演算子 | 比較演算子。選択肢: Eq(等しい)/ Ne(等しくない)/ Gt(より大きい)/ Lt(より小さい)/ Ge(以上)/ Le(以下) |
| 値 | フィールド値と比較する値(数値) |
| ボタン | 説明 |
|---|---|
| 条件追加 | 条件行を末尾に追加する |
| 条件削除 | 選択中の条件行を削除する |
応答テンプレート
マッチしたときに返すバイト列をテンプレート記法で記述します。リテラル HEX と置換トークンを組み合わせて記述します。
| 要素 | 説明 |
|---|---|
| リテラル HEX | そのまま送出するバイト列(例: AA BB CC) |
{field:フィールド名} |
受信フィールドの値を応答に埋め込む |
{len:N} |
応答全体のバイト長を N バイト幅で埋め込む |
{crc:種別} |
チェックサム / CRC を計算して埋め込む(例: {crc:Crc16Ccitt}) |
記述例: AA {field:cmd} {len:2} {crc:Crc16Ccitt}
| ボタン・項目 | 説明 |
|---|---|
| テンプレート入力欄 | 応答テンプレートを入力する |
| 「構文チェック」ボタン | テンプレートの記法を検証し、結果を隣に表示する |