【问题标题】:Closing serial port results in program crash on mac关闭串口导致mac上的程序崩溃
【发布时间】:2014-05-27 14:18:16
【问题描述】:

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

:))

【问题讨论】:

  • 程序崩溃了吗?如果是这样,您能否给我们堆栈跟踪。电脑会不会死机?尝试更新/重新安装 java。

标签: java macos serial-port


【解决方案1】:

尝试使用if

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 2023-04-06
    相关资源
    最近更新 更多