2013-10-24 105 views
0

有没有一种方法可以使用javax.smartcardio.TerminalFactory来识别我的NFC读卡器?与NFC(PC/SC)的Java通信

我使用Ubuntu 13.04与pcsc_scan我能够读取卡:

Reader 0: SCL010 Contactless Reader [SCL010 Contactless Reader] (21160951211983) 00 00 
    Card state: Card inserted, 
    ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A 

    ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A 
+ TS = 3B --> Direct Convention 
+ T0 = 8F, Y(1): 1000, K: 15 (historical bytes) 
    TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0 
----- 
    TD(2) = 01 --> Y(i+1) = 0000, Protocol T = 1 
----- 
+ Historical bytes: 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 
    Category indicator byte: 80 (compact TLV data object) 
    Tag: 4, len: F (initial access data) 
     Initial access data: 0C A0 00 00 03 06 03 00 01 00 00 00 00 
+ TCK = 6A (correct checksum) 

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt): 
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A 
3B 8F 80 01 80 4F 0C A0 00 00 03 06 .. 00 01 00 00 00 00 .. 
    Mifare Standard 1K (as per PCSC std part3) 
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A 
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 .. .. 00 00 00 00 .. 
    RFID - ISO 14443 Type A Part 3 (as per PCSC std part3) 
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A 

但随着

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

总是返回一个空list

这是一个驱动程序问题?

回答

1

只要运行程序-Dsun.security.smartcardio.library=/lib/x86_64-linux-gnu/libpcsclite.so.1并且工作!

+1

当然,根据您的系统更改libpcsclite.so.1的路径。顺便给你节省很多时间,谢谢! :) – bdevay