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 d6d256b1c..00eabb206 100644 --- a/app/src/processing/app/AbstractTextMonitor.java +++ b/app/src/processing/app/AbstractTextMonitor.java @@ -190,14 +190,9 @@ public abstract class AbstractTextMonitor extends AbstractMonitor { 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 9af95d8d4..b2656ca65 100644 --- a/app/src/processing/app/SerialMonitor.java +++ b/app/src/processing/app/SerialMonitor.java @@ -48,14 +48,16 @@ public class SerialMonitor extends AbstractTextMonitor { 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 45a52a454..035005ac3 100644 --- a/app/src/processing/app/SerialPlotter.java +++ b/app/src/processing/app/SerialPlotter.java @@ -242,12 +242,14 @@ public class SerialPlotter extends AbstractMonitor { 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 class SerialPlotter extends AbstractMonitor { } protected void onEnableWindow(boolean enable) { - serialRates.setEnabled(enable); textField.setEnabled(enable); sendButton.setEnabled(enable); - lineEndings.setEnabled(enable); } private void onSerialRateChange(ActionListener listener) {