In meiner Anwendung versuche ich auf einen COM-Port zu schreiben. Das verbundene Gerät ist ein Arduino, das die gesendete Nachricht zurückgibt (zu Testzwecken). Aber wenn ich darauf schreibe, bekomme ich nicht die Antwort, die ich erwarte, aber wenn ich einen Knopf in einer GUI verwende, tue ich es.Java Com Port lesen schreiben Problem
Die Schreibmethode:
public void write(String x) {
try {
outStream.write(x.getBytes());
outStream.flush();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
Der Ereignis-Listener
public void serialEvent(SerialPortEvent event) {
logger.debug("listener called");
if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
BufferedReader portReader = new BufferedReader(new InputStreamReader(inStream));
try {
String line = portReader.readLine();
test(line);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
}
Die Serialport benachrichtigen, wenn Daten verfügbar sind und der Hörer wird aufgerufen, nachdem ich die Daten schreiben aber ich erhalte eine OUTPUT_BUFFER_EMPTY Antwort während Ich erwarte die Zeichenfolge, die ich gesendet habe.
Der SerialPortHandler basiert auf Instanzen, so dass ich den gleichen überall in meiner Anwendung verwenden kann.
Beispiel:
SerialPortHandler handler = SerialPortHandler.getInstance();
handler.write("hello world");
erwartet:
DEBUG [SerialPortHandler.java] - listener called
hello world
aktuell:
DEBUG [SerialPortHandler.java] - listener called