我在java中创建了一个程序,通过串行端口(RS232)连接到外部AVR微控制器。
当我想关闭串行连接时,java程序崩溃并冻结。但是,这只发生在mac(OSX 10.9.3)上,并且在Windows上没有问题。
我按以下方式关闭端口:
private SerialPort serialPort;
public void closePort() {
serialPort.close();
}
我已经尝试了以下代码来修复它:然后在关闭端口后没有崩溃,但是下次我想打开相同的端口时,我得到了使用中的端口异常。
public class CloseThread extends Thread {
private SerialPort port;
public CloseThread(SerialPort port) {
super();
this.port = port;
}
@Override
public void run() {
try {
port.getOutputStream().close();
port.getInputStream().close();
port.removeEventListener();
port.close();
} catch (IOException ex) {
Logger.getLogger(CloseThread.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
然后在我开头提到的方法中:
public void closePort() throws Exception {
new CloseThread(serialPort).start();
}
如果有人帮我解决了这个问题,我会非常感激,即获得关闭端口的方法不会导致mac崩溃。
:))
答案 0 :(得分:0)
尝试使用if
:
if(serialPort.isOpened())
serialPort.closePort(); //Close serial port