是否可以使用javax.smartcardio将APDU发送到NFC阅读器(例如ACR1222L)而无需实际卡“已连接”?根据我的API调查,您只能使用从Card获得的CardChannel发送APDU,并且您可以从CardTerminal上的connect获得。但是,如果您在NFC读卡器中没有卡时尝试连接,则会收到CardException。 在某些读卡器上,使用标准APDU控制外围设备。 这种方式似乎无法控制ACR1222先前卡的任何外围设备。或者我在javax.smartcardio中遗漏了什么?
答案 0 :(得分:0)
根据我的调查,我会为自己部分回答。 Card类有方法transmitControlCommand。不知道,APDU如何转换为“controlCode”和“command”字节数组。 即使没有连接卡,您也可以使用connect方式从“CardTerminal”获取Card对象,并使用“direct”作为协议。出于某种原因,“直接”适用于Windows JVM 1.6,但不适用于Mac,据报道不适用于Linux JVM。
答案 1 :(得分:0)
另一个观察结果表明,对于ESCAPE命令,controlCode应为3500。根据ACR 1222 L的文档,即使没有连接卡,退出命令也可用于控制阅读器的外围设备。然后,命令字节序列是“普通的”APDU。这取决于理论证明使用ACS提供的Android USB库。奇怪的是,标准PCSC驱动程序不喜欢3500(0xDAC)命令。来自ACS的Mac的PCSC驱动程序甚至不喜欢连接(“直接”)。所以现在用于控制ACR1222L的java applet不会发生。 :(
答案 2 :(得分:0)
我想通过connect(“direct”)连接到ACR122U并通过transmitControlCommand发送一些东西。 使用Windows 7运行它就像魅力一样。 :)
有没有人尝试过ACR for Linux提供的驱动程序或者与标准pcscd不同的驱动程序? 或者你认为让这个与linux和java一起工作是不可能的吗?