Ja sam ovim kodom prozvao citac i karticu. Sa samom karticom pricas slanjem APDUa. Sve to radis preko paketa
javax.smartcardio.
Code:
package smartKartice;
import java.util.List;
import javax.smartcardio.Card;
import javax.smartcardio.CardChannel;
import javax.smartcardio.CardException;
import javax.smartcardio.CardTerminal;
import javax.smartcardio.CommandAPDU;
import javax.smartcardio.ResponseAPDU;
import javax.smartcardio.TerminalFactory;
public class Main {
public static void main(String[] a) {
TerminalFactory tf = TerminalFactory.getDefault();
try {
List<CardTerminal> ctList = ctList = tf.terminals().list();
System.out.println("Terminali: " + ctList);
Card card = ctList.get(0).connect("T=0");
System.out.println("Kartica: " + card);
System.out.println(card.getATR());
//posaljiAPDU(card);
System.out.println("Protokol: " + card.getProtocol());
card.disconnect(false);
} catch (CardException ex) {
ex.printStackTrace();
}
}
private static void posaljiAPDU(Card card) throws CardException {
CommandAPDU apdu = new CommandAPDU(1, 1, 0, 0);
CardChannel cc = card.getBasicChannel();
ResponseAPDU rApdu = cc.transmit(apdu);
byte[] data = rApdu.getData();
String response = "";
for (int i = 0; i < data.length; i++) {
response += (char) data[i];
}
System.out.println("Odgovor: " + response);
}
}