2014-05-27 4 views
0

Я сделал программу в java, которая подключается к внешнему микроконтроллеру AVR через последовательный порт (RS232).Закрытие последовательного порта приводит к сбою программы на mac

Когда я хочу закрыть последовательное соединение, программа 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(); 
} 

Я бы очень благодарен, если кто-то помог мне решить эту проблему, то есть получить близкий метод порта, чтобы не вызвать аварии на макинтош

:))

+0

ли сбой программы? Если бы вы могли дать нам трассировку стека. Сбой компьютера? Попробуйте обновить/переустановить java. – DirkyJerky

ответ

0

Попробуйте использовать if:

if(serialPort.isOpened()) 
    serialPort.closePort(); //Close serial port 
Смежные вопросы