0

smartcardio APIを使用してhid omnikey 5325近接リーダーを使用してIDカードを読み取る必要があるJavaスイングアプリを開発しています。(Windows XP OS)

try {
    terminals = factory.terminals().list();
    System.out.println("Terminals: " + terminals);
    // get the first terminal
    CardTerminal terminal = terminals.get(0);
    terminal.waitForCardPresent(0); 
    Card card = terminal.connect("T=0");                    
    System.out.println("Card present!");            
    System.out.println("card: " + card);        
} catch (CardException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
}

コードはリーダーを検出しますが、カードが挿入されると、 terminal.waitForCardPresent(0)が返されるはずですが、返されません。

HID 独自のワークベンチを使用すると、カードが検出されるため、カードまたはリーダーに問題はありません。

4

2 に答える 2

1

インデックスだけを使用してリストからカード端末を選択しています。これは、端末を選択する最も信頼できる方法ではありません。誤った端末を取得する理由は、リーダーに接触型リーダーと非接触型リーダーの両方が含まれているためです。これらはシステムとは別のリーダーです。だから、あなたは連絡先カードが挿入されるのを待っていました。

代わりに、名前でカード リーダーを選択する方がはるかに優れています。ListofCardTerminalを使用して名前を取得し、名前を出力できます(または、診断ユーティリティなどを使用します。名前は、リーダーの特性とシーケンス番号を使用してオペレーティング システムによってコンパイルされた、リーダーの PCSC で決定された名前です)。 .

于 2014-01-23T20:06:18.373 に答える