2017-05-07 115 views
0

在我的應用程序中,我試圖寫入一個COM端口。連接的設備是一個arduino,它返回我發送的消息(用於測試目的)。但是,當我寫信給它時,我沒有得到我期望的響應,但是當我在GUI中使用按鈕時,我卻這麼做。Java Com端口讀寫有問題

寫方法:

public void write(String x) { 
    try { 
     outStream.write(x.getBytes()); 
     outStream.flush(); 
    } catch (IOException e) { 
     logger.error(e.getMessage(), e); 
    } 
} 

事件監聽器

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); 
     } 
    } 
} 

如果數據是可用的和我寫的數據後,但我得到的,而一個OUTPUT_BUFFER_EMPTY響應監聽器被稱爲一個串口會通知我期待我發送的字符串。

SerialPortHandler基於實例,所以我可以在我的應用程序中隨處使用同一個實例。

例如:

SerialPortHandler handler = SerialPortHandler.getInstance(); 
handler.write("hello world"); 

預期:

DEBUG [SerialPortHandler.java] - listener called 
hello world 

實際:

DEBUG [SerialPortHandler.java] - listener called 

回答

0

問題是,我沒有哈瓦寫,我初始化的時刻之間的延遲我的serialportHandler