#java #timer #arduino #serial-port #serial-communication
#java #таймер #arduino #последовательный порт #последовательная связь
Вопрос:
Я использую Arduino, подключенный к Java Netbeans через Serialcomm. Моя java-программа должна непрерывно получать данные, а последовательный порт должен быть постоянно открыт. И теперь я испытываю задержку или запаздывание в программе. Я думаю, что это может быть из-за таймера, поэтому я попытался удалить его. Но последовательный порт больше не открывается, когда я это делаю.
Что я должен сделать, чтобы устранить задержку или замедление работы программы? Может быть, есть другой способ сделать это, например, изменить мой прослушиватель действий или другой способ, чтобы он непрерывно считывал последовательный порт без использования таймера.
Заранее спасибо за ответ!
Timer timer ;
ActionListener readRF = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String str;
SerialPort serialPort = new SerialPort("COM3");
//In the constructor pass the name of the port with which we work
try {
//Open port
serialPort.openPort();
serialPort.setParams(SerialPort.BAUDRATE_9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
Thread.sleep(1000);//Very important !!!
//Read data from port
for (int i = 0; i < 30; i ) {
str = serialPort.readString();
if (str != null) {
System.out.println(str);
if(str.contains("15538849")){
queue1.setText(String.valueOf(q.Table1Peek()));
}else if(str.contains("15538850")){
q.Table1DeQueue();
queue1.setText(String.valueOf(q.Table1Peek()));
}
}
Thread.sleep(100);
}
//Closing the port
serialPort.closePort();
} catch (SerialPortException ex ) {
System.out.println(ex);
} catch (InterruptedException ex) {
System.out.println(ex);
}
}
};
timer = new Timer(1000,readRF);
timer.setInitialDelay(0);
timer.start();