From ffa8720114191c85f861becb2d016df8ec94f580 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Thu, 5 Mar 2020 10:38:35 +0100 Subject: [PATCH] Allow config changes and clear in disabled serial monitor and plotter When the serial device disconnects, the serial monitor and plotter are disabled. Previously, the window would be completely disabled. Now, the configuration controls (autoscroll, add timestamp, baudrate, line endings) can still be changed while the window is disconnected. These settings will not take effect immediately, but will be used when the port is next opened. Also, the clear output button can now also be used when the port is disconnected, which makes it easy to get a clean start when reconnecting the serial port. --- .../processing/app/AbstractTextMonitor.java | 5 ----- app/src/processing/app/SerialMonitor.java | 18 ++++++++++-------- app/src/processing/app/SerialPlotter.java | 16 ++++++++-------- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/app/src/processing/app/AbstractTextMonitor.java b/app/src/processing/app/AbstractTextMonitor.java index d6d256b1c70..00eabb20649 100644 --- a/app/src/processing/app/AbstractTextMonitor.java +++ b/app/src/processing/app/AbstractTextMonitor.java @@ -190,14 +190,9 @@ protected void onEnableWindow(boolean enable) { textArea.setBackground(new Color(238, 238, 238)); } textArea.invalidate(); - clearButton.setEnabled(enable); scrollPane.setEnabled(enable); textField.setEnabled(enable); sendButton.setEnabled(enable); - autoscrollBox.setEnabled(enable); - addTimeStampBox.setEnabled(enable); - lineEndings.setEnabled(enable); - serialRates.setEnabled(enable); } public void onSendCommand(ActionListener listener) { diff --git a/app/src/processing/app/SerialMonitor.java b/app/src/processing/app/SerialMonitor.java index 9af95d8d4cd..b2656ca653d 100644 --- a/app/src/processing/app/SerialMonitor.java +++ b/app/src/processing/app/SerialMonitor.java @@ -48,14 +48,16 @@ public SerialMonitor(BoardPort port) { String rateString = wholeString.substring(0, wholeString.indexOf(' ')); serialRate = Integer.parseInt(rateString); PreferencesData.set("serial.debug_rate", rateString); - try { - close(); - Thread.sleep(100); // Wait for serial port to properly close - open(); - } catch (InterruptedException e) { - // noop - } catch (Exception e) { - System.err.println(e); + if (serial != null) { + try { + close(); + Thread.sleep(100); // Wait for serial port to properly close + open(); + } catch (InterruptedException e) { + // noop + } catch (Exception e) { + System.err.println(e); + } } }); diff --git a/app/src/processing/app/SerialPlotter.java b/app/src/processing/app/SerialPlotter.java index 45a52a45464..035005ac362 100644 --- a/app/src/processing/app/SerialPlotter.java +++ b/app/src/processing/app/SerialPlotter.java @@ -242,12 +242,14 @@ public SerialPlotter(BoardPort port) { String rateString = wholeString.substring(0, wholeString.indexOf(' ')); serialRate = Integer.parseInt(rateString); PreferencesData.set("serial.debug_rate", rateString); - try { - close(); - Thread.sleep(100); // Wait for serial port to properly close - open(); - } catch (Exception e) { - // ignore + if (serial != null) { + try { + close(); + Thread.sleep(100); // Wait for serial port to properly close + open(); + } catch (Exception e) { + // ignore + } } }); @@ -379,10 +381,8 @@ public void appyPreferences() { } protected void onEnableWindow(boolean enable) { - serialRates.setEnabled(enable); textField.setEnabled(enable); sendButton.setEnabled(enable); - lineEndings.setEnabled(enable); } private void onSerialRateChange(ActionListener listener) {