【发布时间】: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