From 61389303bbe732113d62a9aab576da0c24770ae5 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Sun, 21 Oct 2012 22:14:01 +0200 Subject: [PATCH] Serial port can take a while to close (especially on latest MacOSX) take this fact in account. --- app/src/processing/app/SerialMonitor.java | 3 +++ app/src/processing/app/debug/BasicUploader.java | 10 +++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/src/processing/app/SerialMonitor.java b/app/src/processing/app/SerialMonitor.java index 1f34e8f7e..58adff44e 100644 --- a/app/src/processing/app/SerialMonitor.java +++ b/app/src/processing/app/SerialMonitor.java @@ -139,9 +139,12 @@ public class SerialMonitor extends JFrame implements MessageConsumer { Preferences.set("serial.debug_rate", rateString); closeSerialPort(); try { + Thread.sleep(100); // Wait for serial port to properly close openSerialPort(); } catch (SerialException e) { System.err.println(e); + } catch (InterruptedException e) { + e.printStackTrace(); } }}); diff --git a/app/src/processing/app/debug/BasicUploader.java b/app/src/processing/app/debug/BasicUploader.java index f88a38104..4328cc1a6 100644 --- a/app/src/processing/app/debug/BasicUploader.java +++ b/app/src/processing/app/debug/BasicUploader.java @@ -141,10 +141,14 @@ public class BasicUploader extends Uploader { while (timeout > System.currentTimeMillis()) { List portList = Serial.list(); if (portList.contains(uploadPort)) { - Serial.touchPort(uploadPort, 9600); - break; + try { + Serial.touchPort(uploadPort, 9600); + break; + } catch (SerialException e) { + // Port already in use + } } - Thread.sleep(100); + Thread.sleep(250); } } else { Serial.touchPort(uploadPort, 9600);