我使用Java進行編程以與連接到COM端口的設備(通過USB連接到PC,但通過RS232到USB電纜連接)進行通信。我寫了一個與jssc交談的程序,並且在Windows下正常工作,即使在沒有任何事情發生時它也會繼續工作更長時間,就像它應該一樣。在Linux下,程序在2分鐘或3分鐘後停止響應,我不知道爲什麼。jssc writebytes在linux上停止工作一段時間後
運行語句如下
public void run() {
while (stayConnected) {
try {
serialPort.writeBytes(pollBuf);
readResponse(false);
Thread.sleep(400);
serialPort.writeBytes(readEvents);
readResponse(true);
} catch (InterruptedException ie) {
logger.error("Interrupted exception: " + ie.getMessage());
} catch (SerialPortException spe) {
logger.error("SerialPortException: " + spe.getMessage());
}
}
}
要知道那裏的程序掛起我已經添加loglines和我發現的最後一個命令才能正常工作是readResponse(真)最後一次通話和首先停止返回是serialPort.writeBytes(pollBuf)。 希望它能解決這個問題,我將400毫秒的睡眠分成兩部分,並在serialPort.writeBytes(pollBuf)之前放置另一個睡眠。這沒有幫助。不知何故,serialPort.writeBytes函數永遠不會返回,也不會拋出異常。
有沒有人猜測失敗可能是什麼?這不是stayConnected布爾值,因爲我從來沒有調用函數,但它設置爲false;
編輯:我只是增加了一個計數器和程序進入環路283和285倍,當我跑了兩次,這是相當密切,雙方約2分鐘......