2017-05-07 10 views
0

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 

Antwort

0

Das Problem war, dass ich nicht eine Verzögerung zwischen dem Schreiben und dem Moment, als ich initialisiert hava hat mein serialportHandler