首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用smartcardio实现智能卡刷卡,当从USB中拔出读卡器,再次插入后,无法正常读卡?

使用smartcardio实现智能卡刷卡,当从USB中拔出读卡器,再次插入后,无法正常读卡?

提问于 2023-05-04 11:35:24
回答 3关注 0查看 212
代码语言:java
复制
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

请问有没有办法在不重启小程序的情况下,能否正常读卡

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档