У меня есть проблема в моей системе, когда при сканировании карты на RFID она отображает UID с использованием System.out.println(str);
, но когда я передал его через jTextField.setText(str);
, он не отображает UID. Кроме того, странная часть, когда я пытаюсь System.out.println(jTextField.getText());
, он отображает UID.
Может кто-нибудь помочь мне с этой проблемой? И объясните, если возможно, почему это происходит?
Это мой основной класс:
public class IDSystem {
public static String devicePortName = "Arduino Uno";
public static SerialPort arduinoPort = null;
public static InputStream arduinoStream = null;
public static int PACKET_SIZE_IN_BYTES = 8;
public static void main(String[] args) {
int len = SerialPort.getCommPorts().length;
SerialPort serialPorts[] = new SerialPort[len];
serialPorts = SerialPort.getCommPorts();
for (int i = 0; i < len; i++) {
String portName = serialPorts[i].getDescriptivePortName();
if (portName.contains(devicePortName)) {
arduinoPort = serialPorts[i];
arduinoPort.openPort();
break;
}
}
PacketListener listener = new PacketListener();
arduinoPort.addDataListener(listener);
Login l = new Login();
l.setVisible(true);
}
}
Это мой PacketListener
класс:
public final class PacketListener implements SerialPortPacketListener {
String ex = "/";
String id;
@Override
public int getPacketSize() {
return IDSystem.PACKET_SIZE_IN_BYTES;
}
@Override
public int getListeningEvents() {
return SerialPort.LISTENING_EVENT_DATA_RECEIVED;
}
@Override
public void serialEvent(SerialPortEvent event) {
byte[] newData = event.getReceivedData();
String str = new String(newData).split("\n", 2)[0].replaceAll("\\s+", "");
int byteSize = 0;
try {
byteSize = str.getBytes("UTF-8").length;
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(PacketListener.class.getName()).log(Level.SEVERE, null, ex);
}
if (byteSize == IDSystem.PACKET_SIZE_IN_BYTES) {
System.out.println(str);
Login l = new Login();
l.jTextField.setText(l.jTextField.getText() + str);
System.out.println(l.jTextField.getText());
}
}
}