while(true){
TerminalFactory factory = TerminalFactory.getDefault();
CardTerminals cardTerminals = factory.terminals();
List<CardTerminal> cards = cardTerminals.list();
CardTerminal cardTerminal = cards.get(0);
try {
cardTerminal.waitForCardPresent(0);
} catch (CardException e){
}
card = cardTerminal.connect("*");
CardChannel channel = card.getBasicChannel();
final byte[] readUID = new byte[]{(byte) 2xFF, (byte) 0xSA, (byte)0x00, 0, 0};
CommandAPDU command = new CommandAPDU(readUID);
ResponseAPDU respApdu = channel.transmit(command);
card.disconnect(true);
}
我使用了smartcardio包,实现了一个简单的小程序,用来读卡
当我把NFC读卡器拔出后,提示异常SCARD_E_SERVICE_STOPPED
在不重启小程序的情况下,再次插入NFC读卡器,无法正常读卡
重启小程序后,可正常读卡
堆栈异常信息
javax.smartcardio.CardException: list() failed
at sun.security.smartcardio.PCSCTerminals.list(PCSCTerminals.java:126)
at javax.smartcardio.CardTerminals.list(CardTerminals.java:72)
at com.digiwin.athena.edge.cardreader.runner.TestClass.main(TestClass.java:45)
Caused by: sun.security.smartcardio.PCSCException: SCARD_E_SERVICE_STOPPED
at sun.security.smartcardio.PCSC.SCardListReaders(Native Method)
at sun.security.smartcardio.PCSCTerminals.list(PCSCTerminals.java:80)
... 2 more
请问有没有办法在不重启小程序的情况下,能否正常读卡
相似问题