nfc - 'Direct Transmit Command' (ACR122U) 和 'PC_to_RDR_Escape' (ACR1251U) 的区别

标签 nfc apdu smartcard-reader pcsc acr122

对于 ACR122U,我知道您可以使用直接传输命令将直接消息传输到 NFC Controller (PN532):0xff 0x00 0x00 0x00...

我看ACR1251U的手册说:读卡器的外设控制命令是通过PC_to_RDR_Escape实现的

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

欢迎提供任何信息!

提前致谢。

最佳答案

“直接传输命令”是一种 APDU 格式,允许您将 native 命令发送到 ACR122U 读取器设备中嵌入的 PN532 NFC Controller 。所以这基本上定义了包装,使 native 命令适合您通过 PC/SC(和 CCID)与阅读器交谈的基于 APDU 的协议(protocol):

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

哪里<DATA>实际上是PN532的命令。

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

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

正如您在 this answer 中发现的那样, 似乎你会为两种命令交换方法使用“直接传输命令”的 APDU 格式。

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

关于nfc - 'Direct Transmit Command' (ACR122U) 和 'PC_to_RDR_Escape' (ACR1251U) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25084197/

相关文章:

android - NFC标签安卓

smartcard - 智能卡中的逻辑 channel

android - 如何使用 IsoDep 读取 NFC 卡?

usb - 通过 CCID 的 ISO/IEC 7816 命令

usb - 从简单的 USB HID 磁卡读卡器获取轨道数据的最简单方法是什么?

c# - 如何从 viewmodel 使用 iOS/Xamarin 扫描 NFC 标签

android - 为什么在将 NFC 标签设置为只读时出现 IOException

android - 一个 NFC 标签上的 2 个 NDEF 消息/记录 - Android

java - Java Card 中的加密/解密输出 + 相应的 APDU

smartcard - 如何区分不同的 ISO 14443-4 卡?