javax.smartcardio SCARD_SHARE_SHARED 和 SLEE4442 延迟
Posted
技术标签:
【中文标题】javax.smartcardio SCARD_SHARE_SHARED 和 SLEE4442 延迟【英文标题】:javax.smartcardio SCARD_SHARE_SHARED and SLEE4442 delay 【发布时间】:2014-03-11 18:56:16 【问题描述】:使用“javax.smartcardio.CardTerminal”我无法使用 SCARD_SHARE_SHARED 参数连接智能卡...连接方法没有该参数...
public abstract Card connect(String protocol) throws CardException
建立与卡的连接。如果连接先前已建立指定的协议,则此方法返回与先前调用相同的 Card 对象。 参数: protocol - 要使用的协议(“T=0”、“T=1”或“T=CL”)或“”使用任何可用的协议进行连接。*
有什么方法可以使用 javax.smartcardio 执行连接 smarcard 的共享模式?
我在连接 SLEE4442 智能卡时遇到延迟问题(插入卡后 15-20 秒),我认为使用 SHARED MODE 连接可能是线索。
【问题讨论】:
【参考方案1】:使用 Java 的 SmartcardIO,与智能卡的连接默认使用SCARD_SHARE_SHARED
打开,因此您应该已经以共享模式连接。
然后您可以使用Card.beginExclusive()
以独占模式重新打开该连接 (SCARD_SHARE_EXCLUSIVE
)。
或者您可以使用以下命令以直接模式 (SCARD_SHARE_DIRECT
) 打开连接:
card = terminal.connect("direct");
但在该模式下,您还需要使用 IOCTL 命令手动设置通信协议,然后才能将 APDU 发送到卡。
【讨论】:
请用哪种 smartcardio 方法发送 IOCTL?以上是关于javax.smartcardio SCARD_SHARE_SHARED 和 SLEE4442 延迟的主要内容,如果未能解决你的问题,请参考以下文章
在 Open JDK 11(Redhat)上找不到 javax.smartcardio.*
使用 javax.smartcardio 读取 NFC Mifare Ultralight 卡
如何使用 RFID 读卡器 (javax.smartcardio) 识别德国身份证?
getATR() 不会在 javax.smartcardio 中重置智能卡