0

私は Netbeans を使用して、arduino Uno と通信する jfx アプリを作成しています。RXTX を 64 ビット OS X ボックスにインストールしましたが、動作しているようです。

アプリケーションのメイン コントローラの 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 が完了する前にユーザーがアプリを閉じると、ハングするようです。アプリケーション ウィンドウが閉じているときにポートを強制的に閉じるにはどうすればよいですか?

4

1 に答える 1

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

ウィンドウを閉じるイベントを添付するのに役立ちます

于 2013-08-08T08:33:04.610 に答える