通常パケット¶
JVMAモジュール通信における【通常パケット】の具体的な構成と、その内容の見方について詳しく説明します。
全体の構造¶
通常パケットは以下の順序で構成されています。
STX → テキスト種別 → データ長 → ブロック番号(必要に応じて) → レコード部 → ETB/ETX → BCC
図解(例)¶

各フィールドの詳細と見方¶
スタートキャラクタ(STX)¶
内容:
0x02です役割:パケットの開始を示すシグナルです
見方:パケットの最初に常に現れる 1 バイトです
テキスト種別¶
内容:1 バイト文字コードです
'S'(0x53)(通信規格選択)'P'(0x50)(パスワード)'C'(0x43)(コマンド)'D'(0x44)(設定データ・取得データ)'V'(0x56)(バージョン)'T'(0x54)(テストモード)
役割:通信内容の種類を識別します
見方:1 バイトの文字コードです。例:
'P'はパスワード関連です
データ長¶
内容:2 バイト BCD です
例:
0x05 0x12→ 0x0512(512 バイト)役割:レコード部のバイト数を示します
見方:最大 1024 バイトまで対応しています。重要な値です
補足:
レコード部は AsReader と自動販売機で中継伝送されるデータの本体です。
先頭 1 バイトは ブロック番号 となり、その後にレコードが続きます。
詳細については JVMA の仕様を参照してください。
ブロック番号(任意)¶
内容:1 バイト BCD(
0x00〜0x99)です役割:分割送信時の順序管理に使用します
例:
0x00は最初のブロックです
レコード部¶
内容:実データです
役割:通信のメイン情報です
見方:複数レコードが含まれる場合があります
終了キャラクタ(ETB/ETX)¶
内容:
ETB:
0x17(中間ブロック終端)ETX:
0x03(最後のブロック終端)
役割:データの区切り/終了を示します
見方:必ずパケットの末尾に存在します
BCC(Block Check Character)¶
内容:1 バイトのチェック値です
役割:パケット整合性の検証に使用します
算出方法:STX〜ETB/ETX までの全バイトの XOR 結果です
実際のパケット例¶
02 50 00 05 00 41 42 43 44 45 46 17 1A
02:STX です50:テキスト種別'P'(パスワード)です00 05:データ長(5 バイト)です00:ブロック番号です41 42 43 44 45:レコード部(ASCII"ABCDE") です17:ETB です1A:BCC です
この例では、パスワード関連データの送信を示しています。
まとめ¶
通常パケットは STX と ETB/ETX により明確に区切られます
各フィールドを正しく解釈することが解析の基本です
特に「データ長」と「BCC」は要確認です
肯定応答パケット(ACK)¶
構成¶
フィールド |
サイズ |
内容 |
役割 |
ACK |
1byte |
|
肯定応答識別子です |
ステータス |
1byte |
|
応答ステータスです |
内容例¶
06 00→ 正常応答です06 01→ 通信開始ステータスです06 02→ 通信確立です06 03→ コマンド認証成功です
詳細はACKステータスを参照してください
否定応答パケット(NAK)¶
構成¶
フィールド |
サイズ |
内容 |
役割 |
NAK |
1byte |
|
否定応答識別子です |
ステータス |
1byte |
|
否定理由コードです |
内容例¶
15 01→ JVMAモジュールがビジー状態です15 04→ BCCエラーなど通信エラーです
詳細はNAKステータスを参照してください
解析のポイント¶
ACKが来れば正常、NAKが来れば失敗です
NAKステータスコードを確認して原因を特定してください

