protected void connect(IPCSCCardReader reader) throws PCSCException { // recommended use: create a new context for the connection System.out.println("" + reader + " establish context"); IPCSCContext connectionContext = reader.getContext().establishContext(); System.out.println("" + reader + " connect"); // IPCSCConnection connection = connectionContext.connect( // reader.getName(), _IPCSC.SCARD_SHARE_SHARED, // _IPCSC.SCARD_PROTOCOL_Tx); IPCSCConnection connection = connectionContext.connect( reader.getName(), _IPCSC.SCARD_SHARE_SHARED, _IPCSC.SCARD_PROTOCOL_Tx); // reader. byte[] data = connection.transmit(new byte[] {0x60}, 0, 1, 256, false); System.out.println(Utilities.dumpBytes(data)); // connection. System.out.println("" + reader + " begin transaction"); connection.beginTransaction(); System.out.println("" + reader + " end transaction"); connection.endTransaction(_IPCSC.SCARD_LEAVE_CARD); System.out.println("" + reader + " disconnect"); connection.disconnect(_IPCSC.SCARD_LEAVE_CARD); System.out.println("" + reader + " dispose context"); connectionContext.dispose(); }
public void run() throws Exception { IPCSCContext context = PCSCContextFactory.get().establishContext(); List<IPCSCCardReader> readers = context.listReaders(); if (readers.isEmpty()) { System.out.println("no reader found"); return; } for (IPCSCCardReader reader : readers) { final PCSCStatusMonitor monitor = new PCSCStatusMonitor(reader); monitor.addStatusListener( new IStatusListener() { @Override public void onException(IPCSCCardReader reader, PCSCException e) { e.printStackTrace(); } @Override public void onStatusChange( IPCSCCardReader reader, PCSCCardReaderState cardReaderState) { System.out.println( "reader " + cardReaderState.getReader() + " state " + cardReaderState); System.out.println("dfsdf"); if (cardReaderState.isPresent()) { try { System.out.println("Card Present"); monitor.stop(); connect(reader); } catch (PCSCException e) { e.printStackTrace(); } } } }); } while (System.in.available() == 0) { Thread.sleep(100); } // connect(myReader); context.dispose(); }