我有智能卡usb阅读器(ACR38和ACR38 CCID)。我有一些c#代码可以连接,用wincard .dll完美地发送apdu命令((scardestabishcontext, SCardConnect, SCardControl方法)。
我需要用java来做这个,我使用javax。Smartcardio api,有一些类似的代码:java中的PCSC示例
读取器和插入的卡都可以检测到,但是当我尝试连接时有延迟(15-20秒)。这个延迟只在卡第一次插入时出现。如果我拔插同一张卡,没有延迟。如果我取出卡片并插入另一张,又会延迟。我不能连接前15-20秒,与java程序运行与否。
当读卡器/卡连接时,我可以完美地发送apdu命令。
对于c#和wincard .dll api,没有延迟。
我测试了win7, win8, ACR38阅读器,ACR38 CCID阅读器…
为什么我有这个延迟?
如果这种情况只发生在卡第一次插入时,如您所描述的,则可能有其他进程可能对读取器打开独占连接。它可能是windows内置的证书传播服务或一些类似的应用程序,是您可能已经安装的卡中间件的一部分。也可能是Windows更新试图为您的卡下载迷你驱动程序。