交信開始シーケンス¶
自動販売機との交信を開始する際のシーケンス
sequenceDiagram
participant SDK
participant AsReader
participant 自動販売機
SDK->>AsReader: 電源 ON
SDK->>AsReader: パスワードテキスト送信
note over AsReader, 自動販売機: 交信確立処理
AsReader->>SDK: ACK1 または NAK
note over AsReader, 自動販売機: 交信確立処理
AsReader->>SDK: ACK2 または NAK
コマンド送信シーケンス¶
自動販売機へコマンドを送信する際のシーケンス
sequenceDiagram
participant SDK
participant AsReader
participant 自動販売機
SDK->>AsReader: 電源 ON
SDK->>AsReader: パスワードテキスト送信
note over AsReader, 自動販売機: 交信確立処理
AsReader->>SDK: ACK1 または NAK
note over AsReader, 自動販売機: 交信確立処理
AsReader->>SDK: ACK2 または NAK
SDK ->> AsReader: コマンドテキスト送信
AsReader ->> 自動販売機: コマンドテキスト
自動販売機 ->> AsReader: ACK/NAK
AsReader ->> SDK: ACK3 または NAK
データ収集シーケンス¶
自動販売機から設定データや販売データを収集する場合のシーケンス
sequenceDiagram
participant Host as SDK
participant IrASK as AsReader
participant VMC as 自動販売機
Host ->> IrASK: 電源 ON
Host ->> IrASK: パスワードテキスト送信
note over IrASK, VMC: 交信確立処理
IrASK ->> Host: ACK1 または NAK
note over IrASK, VMC: 交信確立処理
IrASK ->> Host: ACK2 または NAK
Host ->> IrASK: コマンドテキスト送信
IrASK ->> VMC: コマンドテキスト
VMC ->> IrASK: ACK/NAK
IrASK ->> Host: ACK3 または NAK
VMC ->> IrASK: データブロック0
IrASK ->> VMC: ACK
IrASK ->> Host: データテキスト0送信
Host ->> IrASK: ACK0 または NAK
VMC ->> IrASK: データブロック1
IrASK ->> VMC: ACK
IrASK ->> Host: データテキスト1送信
Host ->> IrASK: ACK0 または NAK
VMC ->> IrASK: データブロックN
IrASK ->> VMC: ACK
IrASK ->> Host: データテキストN送信
Host ->> IrASK: ACK0 または NAK
自動販売機との通信と、AsReaderとの通信は実際には並列で実行されるが、
バッファオーバーフローを防ぐため、先行するパケットに対するAsReaderへのACKが確認されるまで
自動販売機へのACKは待機される。
データ設定シーケンス¶
自動販売機に設定データ等を送信する場合のシーケンス
sequenceDiagram
participant Host as SDK
participant IrASK as AsReader
participant VMC as 自動販売機
Host ->> IrASK: 電源 ON
Host ->> IrASK: パスワードテキスト送信
note over IrASK, VMC: 交信確立処理
IrASK ->> Host: ACK1 または NAK
note over IrASK, VMC: 交信確立処理
IrASK ->> Host: ACK2 または NAK
Host ->> IrASK: コマンドテキスト送信
IrASK ->> VMC: コマンドテキスト
VMC ->> IrASK: ACK/NAK
IrASK ->> Host: ACK3 または NAK
Host ->> IrASK: データテキスト送信
IrASK ->> VMC: データテキスト
VMC ->> IrASK: ACK
IrASK ->> Host: ACK0 または NAK
エラー時シーケンス¶
交信要求パルスに自動販売機無応答¶
sequenceDiagram
participant Host as SDK
participant IrASK as AsReader
participant VMC as 自動販売機
Host ->> IrASK: パスワードテキスト送信
IrASK ->> VMC: 交信要求パルス
note over VMC: タイムアウト
VMC -->> IrASK: ACK 無応答
note over IrASK: リトライ
IrASK ->> VMC: 交信要求パルス
note over VMC: タイムアウト
VMC -->> IrASK: ACK 無応答
IrASK ->> Host: NAK3
重要
※タイムアウト時間およびリトライ回数は、ファームウェアの設定によって異なります。
交信開始後に自動販売機無応答¶
sequenceDiagram
participant Host as SDK
participant IrASK as AsReader
participant VMC as 自動販売機
Host ->> IrASK: パスワードテキスト送信
IrASK ->> VMC: 交信要求パルス
VMC -->> IrASK: ACK
IrASK ->> Host: ACK1
IrASK ->> VMC: パスワード
note over VMC: タイムアウト
VMC -->> IrASK: ACK 無応答
note over IrASK: リトライ
IrASK ->> VMC: パスワード
note over VMC: タイムアウト
VMC -->> IrASK: ACK 無応答
IrASK ->> Host: NAK3
重要
※タイムアウト時間およびリトライ回数は、ファームウェアの設定によって異なります。
ブロックの途中で自動販売機が転送中断¶
sequenceDiagram
participant SDK
participant AsReader
participant 自動販売機
SDK->>AsReader: 電源 ON
SDK->>AsReader: パスワードテキスト送信
note over AsReader, 自動販売機: 交信確立処理
AsReader->>SDK: ACK1
note over AsReader, 自動販売機: 交信確立処理
AsReader->>SDK: ACK2
SDK ->> AsReader: コマンドテキスト送信
AsReader ->> 自動販売機: コマンドテキスト
自動販売機 ->> AsReader: ACK
AsReader ->> SDK: ACK3
自動販売機 ->> AsReader: データブロック0
AsReader ->> 自動販売機: ACK
AsReader ->> SDK: データテキスト0送信
SDK ->> AsReader: ACK0
note over AsReader, 自動販売機: バイト間タイムアウト
自動販売機 -->> AsReader: 転送中断
AsReader ->> SDK: NAK3
データ送信にホストが無応答¶
sequenceDiagram
participant SDK
participant AsReader
participant 自動販売機
SDK->>AsReader: 電源 ON
SDK->>AsReader: パスワードテキスト送信
note over AsReader, 自動販売機: 交信確立処理
AsReader->>SDK: ACK1
note over AsReader, 自動販売機: 交信確立処理
AsReader->>SDK: ACK2
SDK ->> AsReader: コマンドテキスト送信
AsReader ->> 自動販売機: コマンドテキスト
自動販売機 ->> AsReader: ACK
AsReader ->> SDK: ACK3
自動販売機 ->> AsReader: データブロック0
AsReader ->> 自動販売機: ACK
AsReader ->> SDK: データテキスト0送信
自動販売機 ->> AsReader: データブロック1
AsReader ->> 自動販売機: ACK保留
SDK -->> AsReader: ACK無応答
AsReader ->> SDK: データテキスト0再送
自動販売機 ->> AsReader: データブロック1再送
AsReader ->> 自動販売機: ACK保留
SDK -->> AsReader: ACK無応答
自動販売機 ->> AsReader: データブロック1再送
AsReader ->> 自動販売機: ACK保留
AsReader ->> SDK: NAK5
note over SDK, 自動販売機: 転送中断
データ送信に自動販売機が無応答¶
sequenceDiagram
participant SDK
participant AsReader
participant 自動販売機
SDK->>AsReader: 電源 ON
SDK->>AsReader: パスワードテキスト送信
note over AsReader, 自動販売機: 交信確立処理
AsReader->>SDK: ACK1
note over AsReader, 自動販売機: 交信確立処理
AsReader->>SDK: ACK2
SDK ->> AsReader: コマンドテキスト送信
AsReader ->> 自動販売機: コマンドテキスト
自動販売機 ->> AsReader: ACK
AsReader ->> SDK: ACK3
SDK ->> AsReader: データテキスト0送信
AsReader ->> 自動販売機: データブロック0
自動販売機 -->> AsReader: 無応答
AsReader ->> SDK: NAK3
note over SDK, 自動販売機: 転送中断