On some OSs, some boards may take time before reappearing. Better wait for them 5 reasonable seconds

This commit is contained in:
Federico Fissore 2015-06-11 17:02:01 +02:00
parent c138628c00
commit 8139e85ef1
1 changed files with 12 additions and 0 deletions

View File

@ -70,6 +70,8 @@ import cc.arduino.packages.uploaders.SerialUploader;
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class Editor extends JFrame implements RunnerListener { public class Editor extends JFrame implements RunnerListener {
public static final int MAX_TIME_AWAITING_FOR_RESUMING_SERIAL_MONITOR = 5000;
private final Platform platform; private final Platform platform;
private JMenu recentSketchesMenu; private JMenu recentSketchesMenu;
@ -2411,6 +2413,16 @@ public class Editor extends JFrame implements RunnerListener {
// Return the serial monitor window to its initial state // Return the serial monitor window to its initial state
if (serialMonitor != null) { if (serialMonitor != null) {
BoardPort boardPort = BaseNoGui.getDiscoveryManager().find(PreferencesData.get("serial.port")); BoardPort boardPort = BaseNoGui.getDiscoveryManager().find(PreferencesData.get("serial.port"));
long sleptFor = 0;
while (boardPort == null && sleptFor < MAX_TIME_AWAITING_FOR_RESUMING_SERIAL_MONITOR) {
try {
Thread.sleep(100);
sleptFor += 100;
boardPort = BaseNoGui.getDiscoveryManager().find(PreferencesData.get("serial.port"));
} catch (InterruptedException e) {
// noop
}
}
try { try {
if (boardPort == null) { if (boardPort == null) {
serialMonitor.close(); serialMonitor.close();