2013-08-08 4 views
0

Netbeans를 사용하여 arduino Uno와 통신하는 jfx 응용 프로그램을 만들고 있습니다. 내 64 비트 OS X 상자에 RXTX를 설치했는데 제대로 작동하는 것 같습니다. 초기화() 메소드에서 응용 프로그램의 메인 컨트롤러에서직렬 포트가 열린 상태에서 Java 응용 프로그램이 종료되지 않습니다.

나는이 작업을 수행 :

CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("/dev/tty.usbmodem1d1111"); 
this.serialPort = (SerialPort) portId.open("Box App", 1000); 
// this.serialPort.close(); 

내가 호출하지 않고 응용 프로그램의 유일한 창을 닫을 때이 점을 제외하고 위대한입니다 serialPort.close() 기능, 응용 프로그램/JVM 백그라운드에서 계속 실행됩니다. 컨트롤러의 dispose() 메서드를 재정의하고 Platform.exit()을 추가하려고했습니다. Platform.setImplicitExit(true);은 명시 적으로 true로 설정됩니다.

내가 할 수있는 다른 방법이 확실하지 않습니다. 직렬 I/O가 완료되기 전에 사용자가 응용 프로그램을 닫으면 분명히 멈출 것입니다. 응용 프로그램 창이 닫힐 때 강제로 포트를 닫을 수 있습니까?

+0

다른 콜백 이벤트가 있습니까 창을 닫 이벤트를 첨부 도움이 될 것입니다? – chrylis

답변

1

이 코드 :

topFrame.addWindowListener(new WindowListener() 
     { 
      public void windowClosing(WindowEvent e) 
      { 
       emsClient.close(); 
      } 
      public void windowOpened(WindowEvent e) { 
      } 
      public void windowClosed(WindowEvent e) { 
      } 
      public void windowIconified(WindowEvent e) { 
      } 
      public void windowDeiconified(WindowEvent e) { 
      } 
      public void windowActivated(WindowEvent e) { 
      } 
      public void windowDeactivated(WindowEvent e) { 
      } 
     });` 

당신이에 첨부 할 수 있습니다, 당신은 창 폐쇄로,