关闭串口会导致mac上的程序崩溃

时间:2014-05-27 14:18:16

标签: java macos serial-port

我在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崩溃。

:))

1 个答案:

答案 0 :(得分:0)

尝试使用if

if(serialPort.isOpened())
    serialPort.closePort(); //Close serial port