通常パケット

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(0x000x99)です

  • 役割:分割送信時の順序管理に使用します

  • 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

0x06

肯定応答識別子です

ステータス

1byte

0x000x99

応答ステータスです

内容例

  • 06 00 → 正常応答です

  • 06 01 → 通信開始ステータスです

  • 06 02 → 通信確立です

  • 06 03 → コマンド認証成功です

詳細はACKステータスを参照してください


否定応答パケット(NAK)

否定応答バケット

構成

フィールド

サイズ

内容

役割

NAK

1byte

0x15

否定応答識別子です

ステータス

1byte

0x000x99

否定理由コードです

内容例

  • 15 01 → JVMAモジュールがビジー状態です

  • 15 04 → BCCエラーなど通信エラーです

詳細はNAKステータスを参照してください


解析のポイント

  • ACKが来れば正常、NAKが来れば失敗です

  • NAKステータスコードを確認して原因を特定してください