1

我正在尝试使用javax.smartcardio. 我可以在 Windows 上成功运行此代码,但无法在 Mac 上运行。似乎问题出在Mac的驱动程序上,但我想知道是否有解决方案。

TerminalFactory factory;
factory = TerminalFactory.getDefault();
CardTerminal terminal = factory.terminals().list().get(0);
card = terminal.connect("direct");`

注意:我必须使用直接命令。

编辑:为什么我必须使用直接命令是我需要在没有卡时发送APDU命令。在 T=0、T=1 等其他协议中,当阅读器上没有卡(或设备)时,我无法向阅读器发送 APDU 命令。

4

1 回答 1

1

这很有趣,你必须使用"direct"命令——好吧,你说的是命令,但实际上它是传输协议字符串。不幸的是,API 另有说明(检查到 Java 7 SE)。

这是该方法的 JavaDoc 的摘录connect(String)

protocol- 要使用的协议("T=0""T=1""T=CL"),或"*"使用任何可用协议进行连接。

如果不确定,我会选择"T=1",它应该与现代卡和大多数 PCSC 读卡器兼容。

于 2013-07-03T22:51:11.897 回答