Unterschied zwischen „Direct Transmit Command“ (ACR122U) und „PC_to_RDR_Escape“ (ACR1251U)
-
02-01-2020 - |
Frage
Ich weiß, dass Sie mit einem ACR122U direkte Nachrichten an den NFC-Controller (PN532) senden können, indem Sie den Direktübertragungsbefehl verwenden: 0xff 0x00 0x00 0x00...
.
Wenn ich das Handbuch des ACR1251U lese, heißt es: Die Steuerbefehle der Peripheriegeräte des Lesegeräts werden mithilfe von PC_to_RDR_Escape implementiert.
Was bedeutet das genau?Bedeutet das, dass es nicht möglich ist, Direktnachrichten an den NFC-Controller zu senden?Wenn möglich, wo finden Sie den verwendeten NFC-Controller?
Alle Informationen sind willkommen!
Dank im Voraus.
Lösung
Der „Direktübertragungsbefehl“ ist ein APDU-Format, das es Ihnen ermöglicht, native Befehle an den PN532 NFC-Controller zu senden, der im ACR122U-Lesegerät eingebettet ist.Dies definiert also im Grunde das Umschließen, um native Befehle in das APDU-basierte Protokoll einzufügen, das Sie über PC/SC (und CCID) mit dem Lesegerät kommunizieren:
0xFF 0x00 0x00 0x00 <Lc> <DATA>
Wo <DATA>
ist eigentlich ein Befehl für den PN532.
PC_to_RDR_Escape
ist die CCID-Nachricht (Geräteklasse/Protokoll, die über USB gesprochen wird), die vom PC/SC-Stack aufgerufen wird, wenn Sie einen Escape-Befehl senden.Zum Beispiel, wenn Sie die Java SmartcardIO APIs verwenden Card.transmitControlCommand()
Methode sendet der PC/SC-Stack eine PC_to_RDR_Escape
Nachricht über USB.Der Leser antwortet auf diese Nachricht mit einem RDR_to_PC_Escape
Antwort.
Ebenso, wenn Sie die Methode verwenden CardChannel.transmit()
Methode führt dies dazu, dass der PS/SC-Stack einen (oder mehrere?) PC_to_RDR_XfrBlock
Nachrichten über USB.
Wie Sie herausgefunden haben diese Antwort, scheint es so, als ob Sie für beide Befehlsaustauschmethoden das APDU-Format des „Direktübertragungsbefehls“ verwenden würden.
Ob Sie den Escape-Befehl oder den Sendebefehl verwenden müssen, scheint von der Firmware-Version des Lesegeräts abzuhängen.Beispielsweise benötigen Sie für die Firmware-Versionen 101, 102 (und 103?) normalerweise nur den Sendebefehl, aber die Versionen der nächsten Generation (2xx) scheinen den Escape-Befehlsansatz zu bevorzugen/erfordern (wenn sie kein ATR emulieren). .