如果串口保持打开状态,Java应用程序将不会退出

时间:2013-08-08 08:26:18

标签: java rxtx

我正在使用Netbeans创建一个与arduino Uno对话的jfx应用程序。我已经在我的64位OS X盒子上安装了RXTX,它似乎正在工作。

在initialize()方法的应用程序的主控制器中,我这样做:

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

这很好,除了当我关闭应用程序的唯一窗口而不调用serialPort.close()函数时,app / jvm仍然在后台运行。我已经尝试重写控制器的dispose()方法并添加Platform.exit()。 明确地将Platform.setImplicitExit(true);设置为true。

不确定我还能做些什么。如果用户在串行I / O完成之前关闭了应用程序,显然它会挂起。当应用程序窗口关闭时,如何强制关闭端口?

1 个答案:

答案 0 :(得分: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) {
            }
        });`

将帮助您将事件附加到关闭窗口