Как общаться с читателем с помощью ПК / СЦ - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь установить связь с устройством чтения карт ACS ACR122U NFC с помощью API PC / SC в Windows (winscard.dll).

Согласно этому документу существуетПсевдо-APDU доступен для чтения версии прошивки кард-ридера: FF 00 48 00 00

С картой в ридере у меня это работает: я звоню SCardEstablishContext(), затем SCardConnectA(), чтобы получить ручку, затем сручка, которую я называю SCardTransmit().Я получаю ответ, как и ожидалось.

Но как это сделать без карты в ридере?

В приведенном выше документе написано:

• Псевдо-APDU могут быть отправлены через «интерфейс PICC ACR122U», если тег уже подключен
• Псевдо-APDU могут быть отправлены с помощью «Escape-команды», если тег еще не представлен

У меня естьпонятия не имею, что это значит.Если я попробую тот же метод, что и выше, без карты в считывающем устройстве, вызов SCardConnectA() завершится неудачно с ошибкой SCARD_W_REMOVED_CARD, что означает, что у меня нет дескриптора для вызова SCardTransmit() с помощью.

1 Ответ

0 голосов
/ 01 марта 2019

Хорошо, я понял это.Чтобы иметь возможность звонить SCardConnectA() без карты в считывающем устройстве, dwShareMode должно быть SCARD_SHARE_DIRECT , а dwPreferredProtocols должно быть 0.

...