Hallo zusammen,
ich bin noch relativ neu in der Java Programmierung und möchte eine serielle Kommunikation mit jserialcomm programmieren.
Das Programm soll dauerhaft den com Port prüfen und wenn neue Daten ankommen diese ausgeben und eine Counter zurücksenden.
Soweit funktioniert das auch. Das Problem ist, dass beim Ausführen sich mein Programm selber beendet. Teilweise sofort oder erst nach 1-2 min (wobei es funktioniert).
Kann mir eines sagen, woran das liegt
schon mal Danke im vor raus
ich bin noch relativ neu in der Java Programmierung und möchte eine serielle Kommunikation mit jserialcomm programmieren.
Das Programm soll dauerhaft den com Port prüfen und wenn neue Daten ankommen diese ausgeben und eine Counter zurücksenden.
Soweit funktioniert das auch. Das Problem ist, dass beim Ausführen sich mein Programm selber beendet. Teilweise sofort oder erst nach 1-2 min (wobei es funktioniert).
Kann mir eines sagen, woran das liegt
schon mal Danke im vor raus
Code:
import com.fazecast.jSerialComm.SerialPort;
import com.fazecast.jSerialComm.SerialPortDataListener;
import com.fazecast.jSerialComm.SerialPortEvent;
import java.io.PrintWriter;
public class Main {
private final int port = 1;
private final int baudRate = 9600;
private SerialPort[] serialPorts;
private String input = "";
int counter = 0;
public SerialPort openSerialPort(){
serialPorts = SerialPort.getCommPorts();
try {
SerialPort serialPort = serialPorts[port];
System.out.println(serialPort.getSystemPortName());
serialPort.openPort();
serialPort.setBaudRate(baudRate);
return serialPort;
}
catch (Exception e) {
}
return null;
}
public void readSerial(){
SerialPort serialPort = this.openSerialPort();
serialPort.addDataListener(new SerialPortDataListener() {
@Override
public int getListeningEvents() {
return SerialPort.LISTENING_EVENT_DATA_AVAILABLE;
}
@Override
public void serialEvent(SerialPortEvent event) {
if (event.getEventType() != SerialPort.LISTENING_EVENT_DATA_AVAILABLE)
return;
byte[] readBuffer = new byte[serialPort.bytesAvailable()];
serialPort.readBytes(readBuffer,readBuffer.length);
input += new String(readBuffer);
boolean retval = input.contains("\n");
if (retval) {
input = input.substring(0, input.length() - 2);
System.out.println(input);
input = "";
writeSerial();
}
}
});
}
public void writeSerial(){
SerialPort serialPort = serialPorts[port];
PrintWriter output = new PrintWriter(serialPort.getOutputStream());
counter++;
output.print(counter);
output.flush();
}
public static void main(String[] args) {
new Main().readSerial();
}
}