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

标签 java rxtx

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

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

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

这很棒,只是当我关闭应用程序的唯一窗口而不调用该 serialPort.close() 函数时,app/jvm 会在后台保持运行。我尝试重写 Controller 的 dispose() 方法并添加 Platform.exit()Platform.setImplicitExit(true); 显式设置为 true。

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

最佳答案

这段代码:

   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) {
            }
        });`

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

关于如果串行端口保持打开状态,Java 应用程序将不会退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18121284/

相关文章:

java - 尝试在 Pi 上的 java 中为 RXTX 的代码中设置 lib 路径

java - 跳过一些特殊字符

java - 什么是用于覆盖 hashcode() 和 equals() 方法的 HashCodeBuilder 和 EqualsBuilder?

java - 如何检查方法中的所有参数是否都是特定类型?

java - Java 运行时环境检测到 fatal error ::当 Eclipse IDE 与 Arduino 交互时

java - 通过串口上传文件

java - 是否可以打包通用类?

java - 内部 JAR 使用文件系统上的文件

java - 运行 JAR 文件时右键菜单损坏

用于带有 GSM 调制解调器 rxtx 的 IVRS 的 Java 多线程(播放语音文件使事件监听器停止工作)