如何使用 PC/SC 与 reader 通信
How to communicate with the reader using PC/SC
我正在尝试使用 Windows (winscard.dll) 上的 PC/SC API 与 ACS ACR122U NFC 卡 reader 通信。
根据this document,有伪APDU可用于读取卡reader固件版本:FF 00 48 00 00
有了 reader 中的一张卡,我有这个工作:我调用 SCardEstablishContext()
,然后 SCardConnectA()
得到一个句柄,然后用句柄调用 SCardTransmit()
.正如预期的那样,我得到了答案。
但是 reader 中没有卡片怎么办?
以上文件说:
• Pseudo-APDUs can be sent through the “ACR122U PICC Interface” if the tag is already connected
• Pseudo-APDUs can be sent using “Escape Command” if the tag is not yet presented
我不知道那是什么意思。如果我在 reader 中没有卡片的情况下尝试与上面相同的方法,SCardConnectA()
调用失败并出现 SCARD_W_REMOVED_CARD
错误,这意味着我没有句柄来调用 SCardTransmit()
.
好的,我明白了。要允许在reader中无卡调用SCardConnectA()
,dwShareMode
必须是SCARD_SHARE_DIRECT
和dwPreferredProtocols
必须是 0
.
我正在尝试使用 Windows (winscard.dll) 上的 PC/SC API 与 ACS ACR122U NFC 卡 reader 通信。
根据this document,有伪APDU可用于读取卡reader固件版本:FF 00 48 00 00
有了 reader 中的一张卡,我有这个工作:我调用 SCardEstablishContext()
,然后 SCardConnectA()
得到一个句柄,然后用句柄调用 SCardTransmit()
.正如预期的那样,我得到了答案。
但是 reader 中没有卡片怎么办?
以上文件说:
• Pseudo-APDUs can be sent through the “ACR122U PICC Interface” if the tag is already connected
• Pseudo-APDUs can be sent using “Escape Command” if the tag is not yet presented
我不知道那是什么意思。如果我在 reader 中没有卡片的情况下尝试与上面相同的方法,SCardConnectA()
调用失败并出现 SCARD_W_REMOVED_CARD
错误,这意味着我没有句柄来调用 SCardTransmit()
.
好的,我明白了。要允许在reader中无卡调用SCardConnectA()
,dwShareMode
必须是SCARD_SHARE_DIRECT
和dwPreferredProtocols
必须是 0
.