2011-06-03 44 views
8

我們已經購買了用於NFC測試的ACR122 USB SDK。我們希望爲ACR122U-A2 NFC閱讀器構建測試桌面應用程序。我們正在使用Java在Microsoft Windows 7平臺上開發它。ACR122 USB SDK - JNI調用Winscard.dll

我們預計,爲了使用Winscard.dll中的PC/SC,我們需要進行JNI調用。爲了做到這一點,應該準備好用於JNI調用的C/C++包裝庫。

我認爲這應該是SDK的一部分,因爲示例應用程序引用了JNI包裝器Jacspcsc.dll,但該庫不在那裏。有沒有人有類似的經歷?是否有任何JNI包裝可用於Winscard.dll?

感謝 斯登

回答

5

如果您安裝了讀卡器的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) 
+0

嗨,我已經使用java smardcardio包。我還收到了JNI調用的庫,但我更喜歡Java本地方式......剛纔我完成了所有初始化,創建了GUI並獲得了ATR。現在我要編寫標籤。您是否知道CommandAPDU是否可用於發送非APDU命令,即如何繼續使用標記(例如Mifare Classic 1K),它不理解APDU,而只是專有命令? Thx Petr – STeN 2011-06-15 05:18:22

+0

要將標籤特定命令發送到標籤,您需要通過一些步驟建立到標籤的邏輯連接;您需要輪詢標籤,並且一旦收到響應,請使用直接傳輸命令將命令發送到標籤。 ACR122U閱讀器的文檔提供了有關如何執行此操作的示例。 – 2011-06-15 07:15:16

+0

您需要在「僞APDU」內包裝非接觸式卡的命令(而不是內部接觸式SAM卡)。我們已經在[這裏]實施了一個基於智能卡的提供商[http://scuba.svn.sourceforge.net/viewvc/scuba/acr122provider/src/net/sourceforge/scuba/smartcards/ACR122TerminalFactorySpi.java?revision=161&view =標記)。 – martijno 2012-07-10 14:37:42