В моем проекте я пытаюсь заставить сканер RFID работать все время, нажимая кнопку и повторно нажимая ее, когда нажимается кнопка остановки, однако я пытался сделать это в цикле, но проблема кажется, когда янажмите код кнопки, все работает отлично и работает в цикле, однако после нажатия кнопки он не позволяет мне нажимать что-либо еще, потому что он застрял в цикле while, есть ли способ сохранить его в цикле, но в то же времячтобы остановить его кнопкой остановки.
@Override
public void start() {
while (this.flag) {
try {
TerminalFactory factory = TerminalFactory.getDefault();
List<CardTerminal> terminals = factory.terminals().list();
System.out.println("Terminals: " + terminals);
CardTerminal terminal = terminals.get(0);
System.out.println("Waiting for a card..");
if (terminal == null) {
return;
}
terminal.waitForCardPresent(0);
Card card = terminal.connect("T=1");
System.out.println("Card: " + card);
System.out.println("Protocol: " + card.getProtocol());
CardChannel channel = card.getBasicChannel();
ResponseAPDU response = channel.transmit(new CommandAPDU(new byte[]{(byte) 0xFF, (byte) 0xCA, (byte) 0x00, (byte) 0x00, (byte) 0x00}));
System.out.println("Response: " + response.toString());
if (response.getSW1() == 0x63 && response.getSW2() == 0x00) {
System.out.println("Failed");
}
System.out.println("UID: " + bin2hex(response.getData()));
getUid = bin2hex(response.getData());
Thread.sleep(1000);
} catch (CardException e) {
System.out.println();
JOptionPane.showMessageDialog(null, "Device Not Connected " + e.getMessage());
} catch (InterruptedException ex) {
Logger.getLogger(CardId.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
и для моей кнопки запуска
t = new CardId();
t.start();
, и это моя кнопка остановки
t.flag = false;