2012-01-06 69 views
0

我正在編寫一個應用程序來與當前使用Java的智能卡進行交互。我有一個歐姆龍V2BF系列讀卡器。該應用程序在Debian上運行。如何通過讀卡器使用Java激活/開啓ICC卡?

我一直在使用Java Smart Card I/O API嘗試建立連接到智能卡嘗試。

但我無法檢測/使用

TerminalFactory factory = TerminalFactory.getDefault(); 
    List<CardTerminal> terminals = factory.terminals().list(); 

我使用「按下並激活(冷復位)ICC」通過發送一個命令包OMRON讀者也試圖得到任何卡終端,但響應總是「消極」。

我可以知道我做了這部分錯誤?任何建議將不勝感激!

回答

2

factory.terminals().list()將只顯示你PCSC兼容的默認設備。我沒有看到關於當前閱讀器PCSC支持的任何信息。請查閱相關文件或供應商。

您的智能卡應該是一個ISO 7816-4兼容的智能卡與javax.smartcardio工作,記憶卡將無法正常工作。 javax.smartcardio基本上用於CommandAPDU和ResponseAPDU,它們是用於「處理器」卡的ISO 7816-4兼容數據結構。

你可能會堅持與讀寫器通過串行接口使用讀卡器製造商提供的接口規範進行通信。您可以使用Java Communications API來執行此操作。

請注意,許多製造商將在C/C++甚至.NET中提供示例代碼和庫,在這種情況下,它可能是一個選項,可以切換編程語言/平臺或圍繞本機代碼創建JNI包裝。

如果你正在寫的處理器卡(如信用卡),你甚至可以創建一個javax.smartcardio兼容終端自己,把它插入到終端列表。

+0

非常感謝。我已經與讀卡器進行了串行通信,但由於某些原因,當我嘗試激活該卡時,讀卡器總是響應失敗。 (響應碼描述: 「當C/R激活ICC時,C/R檢測到提供Vcc短路。」 「發生C/R活動ICC,超時或奇偶校驗錯誤時。」) 任何想法有什麼不對?我只有製造商提供的數據傳輸規格。 – 2012-01-06 04:09:10

+0

在我看來,有些卡或讀卡器有問題。我知道有時候測試卡會交付虛擬芯片,這可能會引發這種錯誤。可能是卡的觸點或閱讀器的引腳確實短路。奇偶校驗錯誤也表示出現在非常低的級別故障中,例如在ICC硬件中。嘗試使用不同的卡片,並檢查它們是否完全被讀卡器吞下。 – 2012-01-06 14:15:53

相關問題