我买了几个 ACR1252 NFC 阅读器,因为它们似乎是唯一可以存储和返回内部序列号的阅读器。我需要它们用于 C# 程序,我需要区分插入同一台计算机的 2 个 NFC 阅读器,因为 Windows 按连接顺序分配名称并且可以更改。
我的问题是:如何在没有 NFC 卡的情况下访问返回序列号的命令?它仅在读卡器读取卡片时有效。
我的代码(缩写)是这样的:
public void getReaderSerialNumer()
{
int retCode = Card.SCardEstablishContext(Card.SCARD_SCOPE_SYSTEM, 0, 0, ref hContext);
readername = "ACS ACR1252 1S CL Reader PICC 0";
retCode = Card.SCardConnect(hContext, readername, Card.SCARD_SHARE_DIRECT, Card.SCARD_PROTOCOL_T0 | Card.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);
byte[] sendBytes = new byte[] { 0xE0, 0x00, 0x00, 0x33, 0x00 };
int pcBytesReturned = 0;
Byte[] RecieveBuff = new Byte[64];
uint controlcode = 3225264;
retCode = Card.SCardControl(hCard, controlcode, ref sendBytes[0], sendBytes.Length, ref RecieveBuff[0], RecieveBuff.Length, ref pcBytesReturned);
char[] outchar = System.Text.Encoding.UTF8.GetString(RecieveBuff).ToCharArray();
uint pCard = (uint)hCard;
retCode = Card.SCardDisconnect((int)pCard, Card.SCARD_RESET_CARD);
}
只有第一个命令SCardEstablishContext
可以在没有卡的情况下工作。但是如果读卡器上没有卡SCardConnect
,我会得到错误。SCardControl
SCardConnect
返回 retCode = -2146434967
SCardControl
返回 retCode = 6
但我需要 3 个命令才能获得:
SCardEstablishContext -> hContext -> SCardConnect -> hCard -> SCardControl -> 读卡器序列号
如何在没有附加卡的情况下获取读卡器序列号(只是将读卡器插入 USB 端口)?