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