ACR122 USB SDK - JNI调用Winscard.dll

8
我们购买了ACR122 USB SDK进行NFC测试。我们想要为ACR122U-A2 NFC读卡器构建测试桌面应用程序。我们在Microsoft Windows 7平台上使用Java进行开发。
我们预计需要通过JNI调用来使用Winscard.dll中的PC/SC。为了做到这一点,需要准备一个JNI调用的C/C++包装库。
我认为这应该是SDK的一部分,因为示例应用程序引用了JNI包装器Jacspcsc.dll,但是该库不存在。有人有类似的经验吗?是否有可用于Winscard.dll的JNI包装器?
谢谢 STeN
1个回答

6
如果您已经安装了读卡器的PC / SC驱动程序,您可以使用Java smardcardio包(http://download.oracle.com/javase/6/docs/jre/api/security/smartcardio/spec/javax/smartcardio/package-summary.html)与读卡器通信。
TerminalFactory terminalFactory = TerminalFactory.getDefault();
CardTerminal terminal = terminalFactory.terminals().list().get(0);
Card card = terminal.connect("T=0");
CardChannel channel = card.getBasicChannel();

// Construct a command and transmit it
CommandAPDU command = new CommandAPDU(new byte[]{(byte)0x01, (byte)0x02, ...})
ResponseAPDU response = channel.transmit(command)

嗨,我已经使用了Java smardcardio包。我也收到了JNI调用库,但我更喜欢Java本地方式...现在我已经完成了所有的初始化,制作了GUI并获得了ATR。现在我要编程标签。您知道CommandAPDU是否可用于发送非APDU命令,即如何处理不理解APDU而只能使用专有命令的标签(例如Mifare Classic 1K)吗?谢谢Petr - STeN
要向标签发送特定的命令,您需要通过一些步骤建立与标签的逻辑连接;您需要轮询标签,一旦收到响应,使用直接传输命令向标签发送命令。 ACR122U读卡器的文档提供了如何执行此操作的示例。 - Michael Elias
你需要将非接触式卡片的命令(与内部接触式SAM卡相对)包装在“伪APDU”中。我们已经在这里实现了一个基于smartcardio的提供程序。 - martijno
一个JNI包装器可以围绕libnfc工作,并且可以使您的应用程序与其他基于NXP-PN53x的NFC读卡器一起使用。 - martijno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接