「ダイレクト送信コマンド」(ACR122U) と「PC_to_RDR_Escape」(ACR1251U) の違い
-
02-01-2020 - |
質問
ACR122U では、direct transfer コマンドを使用して、NFC コントローラー (PN532) にダイレクト メッセージを送信できることがわかりました。 0xff 0x00 0x00 0x00...
.
ACR1251Uのマニュアルを読むと、次のように書かれています。 リーダーの周辺機器制御コマンドは、PC_to_RDR_Escape を使用して実装されます。.
これは正確には何を意味しますか?これは、NFC コントローラーにダイレクト メッセージを送信できないことを意味しますか?可能であれば、使用されている NFC コントローラーはどこでわかりますか?
どんな情報でも大歓迎です!
前もって感謝します。
解決
「直接送信コマンド」は、ACR122U リーダー デバイスに組み込まれた PN532 NFC コントローラーにネイティブ コマンドを送信できるようにする APDU 形式です。したがって、これは基本的に、PC/SC (および CCID) 経由でリーダーと通信する APDU ベースのプロトコルにネイティブ コマンドを適合させるためのラッピングを定義します。
0xFF 0x00 0x00 0x00 <Lc> <DATA>
どこ <DATA>
は実際には PN532 用のコマンドです。
PC_to_RDR_Escape
は、エスケープ コマンドを送信するときに PC/SC スタックによって呼び出される CCID メッセージ (USB 経由で話されるデバイス クラス/プロトコル) です。たとえば、Java SmartcardIO API を使用する場合、 Card.transmitControlCommand()
メソッドを使用すると、PC/SC スタックは PC_to_RDR_Escape
USB 経由でメッセージを送信します。読者はこのメッセージに次のように答えます。 RDR_to_PC_Escape
応答。
同様に、メソッドを使用する場合も CardChannel.transmit()
メソッドを使用すると、PS/SC スタックが 1 つ (または複数?) を発行します。 PC_to_RDR_XfrBlock
USB 経由でメッセージを送信します。
でわかったように、 この答え, どちらのコマンド交換方法でも「直接送信コマンド」のAPDU形式を使用することになるようです。
エスケープコマンドを使用するか送信コマンドを使用するかは、リーダーのファームウェアのバージョンに依存するようです。たとえば、ファームウェア バージョン 101、102 (および 103?) の場合、通常は送信コマンドのみが必要ですが、次世代バージョン (2xx) では、(ATR をエミュレートしていない場合) エスケープ コマンド アプローチが好まれる/必要になるようです。 。