Iso 14443请求命令

时间:2014-05-27 12:51:12

标签: c#

我正在尝试与一些智能卡通信。 我有读取器有请求14443A型卡的方法。 当我发出此命令时,有时会返回成功 失败。 我错过了 14443A协议中的某些内容吗?也许卡片进入暂停状态?或者如果出现故障,我必须手动调用暂停状态?或者还有一些我必须事先打电话的其他命令? 在哪里可以获得有关如何使用ISO14443卡建立通信(在协议级别)的信息? 有没有这方面的教程?

这是代码的样子(大致):

 SerialPort p = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);
 p.Open();

 byte[] res;
 res = send(p, REQUEST_TYPEA_COMMAND);
 res = send(p, RESETA_COMMAND);
 // send some other command
 p.Close();

如果我第一次运行上面的代码,则所有调用都可以。但是在第二次运行程序后,第一次调用(REQUEST_TYPEA_COMMAND)失败 - 直到我重新启动阅读器。

1 个答案:

答案 0 :(得分:1)

无法响应REQA命令的卡可能有以下几个原因:

  1. 它不是ISO 14443 A型卡。在这种情况下,它不会(不应该)响应任何REQA命令。正如你的卡片有时那样,情况肯定不是这样。

  2. 该卡未收到REQA命令。如果物理链路(空中接口)上存在传输错误,则可能发生这种情况。

  3. 卡未处于IDLE状态。复位后卡片处于IDLE状态(即现场开启)。如果卡接收到REQA命令,它将转换为READY状态。在处于READY状态时接收具有匹配的UID部分的防冲突命令之外的任何其他命令将卡重置回IDLE状态,然后它可以处理进一步的REQA命令。如果卡进一步激活超过READY状态并接收HLTA命令(或DESELECT,如果激活到ISO 14443-4协议层),它将切换到HALT状态。在HALT状态下,卡不会响应REQA命令,只会响应WUPA(唤醒命令)。