【问题标题】:Direct Command acr122u on mac nfcmac nfc 上的直接命令 acr122u
【发布时间】:2013-06-25 22:12:28
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您能否指出指定此"direct" protocol 的文档?您可能需要专有的安全提供程序才能使用此协议。
  • 这看起来没有记录。另一方面,有一些使用此协议的示例(我也有一个仅适用于 Windows 的示例 :))
  • 我认为有一种方法可以做到这一点:注册一个提供您自己的终端实现的提供程序(以便能够使用getDefault() 方法。然后在返回Terminal。如果我没记错的话,javax.smartcardio 可以扩展为Provider

标签: java nfc smartcard


【解决方案1】:

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

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

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

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

【讨论】:

  • 我确定其他阅读器支持这些 T=* 协议,但是我的阅读器的自动轮询机制不兼容点对点连接(使用 Android 4.0+ 测试)所以我需要实施我自己的。我只能通过直接协议来做到这一点。
  • 啊,是的,我现在明白了:使用专有读卡器命令直接与读卡器对话。一个有趣但不那么便携的想法。
猜你喜欢
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-05
相关资源
最近更新 更多