Java mac nfc上的直接命令acr122u

Java mac nfc上的直接命令acr122u,java,nfc,smartcard,Java,Nfc,Smartcard,我正在尝试使用javax.smartcardio建立NFC连接。我可以在Windows上成功运行此代码,但无法在Mac上运行。似乎问题在于Mac的驱动程序,但我想知道是否有解决方案 TerminalFactory factory; factory = TerminalFactory.getDefault(); CardTerminal terminal = factory.terminals().list().get(0); card = terminal.connect("direct");`

我正在尝试使用
javax.smartcardio
建立NFC连接。我可以在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命令。

非常有趣的是,您必须使用
“direct”
命令-您说的是命令,但实际上它是传输协议字符串。不幸的是,API不是这样说的(检查到Java7SE)

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

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


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

非常有趣的是,您必须使用
“direct”
命令-您说的是命令,但实际上它是传输协议字符串。不幸的是,API不是这样说的(检查到Java7SE)

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

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


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

您能指出指定此
“direct”
协议的文档吗?您可能需要一个专有的安全提供商来使用此协议。这看起来没有文档记录。另一方面,也有一些使用此协议的示例(我也有一个仅适用于Windows:)我认为有一种方法可以实现这一点:注册一个提供您自己的终端实现的提供程序(以便能够使用
getDefault()
方法。然后实现
“direct”
返回的
终端内的协议
。如果我没记错的话,
javax.smartcardio
可以由
提供商扩展。您能指出该
直接指向的文档吗
指定了协议?可能是您需要一个专有的安全提供商来使用此协议。这看起来没有文档记录。另一方面,也有一些使用此协议的示例(我还有一个仅适用于Windows:)我认为有一种方法可以实现这一点:注册一个提供您自己终端实现的提供者(能够使用
getDefault()
方法。然后实现
“direct”
返回的
终端内的协议
。如果我没记错的话,
javax.smartcardio
可以由
提供商扩展
。我确信其他读卡器支持这些T=*协议,但我的读卡器的自动轮询机制不兼容对等连接(使用Android 4.0+测试)所以我需要实现我自己的一个。我只能用直接协议来实现。啊,是的,我现在明白了:使用专有的读卡器命令直接与读卡器对话。这是一个有趣但不可移植的想法。我确信其他读卡器支持这些T=*协议,但我的读卡器的自动轮询机制与对等connec不兼容tions(用Android 4.0+测试过),所以我需要实现我自己的一个。我只能用direct协议来实现。啊,是的,我现在明白了:使用专有的读卡器命令直接与读卡器对话。这是一个有趣但不是便携的想法。