'直接传输命令之间的区别' (ACR122U)和' PC_to_RDR_Escape' (ACR1251U)

时间:2014-08-01 15:59:30

标签: nfc apdu smartcard-reader pcsc acr122

使用ACR122U,我知道您可以使用直接传输命令0xff 0x00 0x00 0x00...将直接信息传输到NFC控制器(PN532)。

当我阅读ACR1251U的手册时,它说:阅读器的外围设备控制命令通过使用PC_to_RDR_Escape 实现。

这是什么意思?这是否意味着无法将直接消息发送到NFC控制器?如果可能,您在哪里可以找到它使用的NFC控制器?

欢迎提供任何信息!

提前致谢。

1 个答案:

答案 0 :(得分:3)

"直接传输命令"是一种APDU格式,允许您将本机命令发送到嵌入在ACR122U读卡器设备中的PN532 NFC控制器。所以这基本上定义了包装以适应本机命令到基于APDU的协议,你通过PC / SC(& CCID)与读者交谈:

 0xFF 0x00 0x00 0x00 <Lc> <DATA>

其中<DATA>实际上是PN532的命令。

PC_to_RDR_Escape是CCID消息(通过USB说出的设备类/协议),当您发送转义命令时,PC / SC堆栈会调用该消息。例如,如果您使用Java SmartcardIO API的Card.transmitControlCommand()方法,则PC / SC堆栈将通过USB发送PC_to_RDR_Escape消息。读者通过RDR_to_PC_Escape回复来回复此消息。

同样,如果您使用方法CardChannel.transmit()方法,这会导致PS / SC堆栈通过USB发出一条(或多条?)PC_to_RDR_XfrBlock条消息。

正如您在this answer中发现的那样,似乎您将使用&#34;直接传输命令的#APDU格式&#34;对于两种命令交换方法。

是否需要使用escape命令或transmit命令似乎取决于阅读器的固件版本。例如,对于固件版本101,102(和103?),您通常只需要传输命令,但下一代版本(2xx)似乎更喜欢/要求(如果他们不能模拟ATR)逃生命令方法。