質問

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 をエミュレートしていない場合) エスケープ コマンド アプローチが好まれる/必要になるようです。 。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top