mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-17 22:23:10 +03:00
SerialMonitor suspend/resume: dealing with boards that change serial port
between uploads. Fixes #3255 Fixed a missing status management, leading IDE to believe Serial Monitor was opened while it was not. See #3268
This commit is contained in:
@ -110,8 +110,9 @@ public class SerialUploader extends Uploader {
|
||||
t = prefs.get("upload.wait_for_upload_port");
|
||||
boolean waitForUploadPort = (t != null) && t.equals("true");
|
||||
|
||||
String uploadPort = prefs.getOrExcept("serial.port");
|
||||
|
||||
if (doTouch) {
|
||||
String uploadPort = prefs.getOrExcept("serial.port");
|
||||
try {
|
||||
// Toggle 1200 bps on selected serial port to force board reset.
|
||||
List<String> before = Serial.list();
|
||||
@ -135,26 +136,23 @@ public class SerialUploader extends Uploader {
|
||||
throw new RunnerException(e.getMessage());
|
||||
}
|
||||
prefs.put("serial.port", uploadPort);
|
||||
if (uploadPort.startsWith("/dev/"))
|
||||
if (uploadPort.startsWith("/dev/")) {
|
||||
prefs.put("serial.port.file", uploadPort.substring(5));
|
||||
else
|
||||
} else {
|
||||
prefs.put("serial.port.file", uploadPort);
|
||||
}
|
||||
}
|
||||
|
||||
prefs.put("build.path", buildPath);
|
||||
prefs.put("build.project_name", className);
|
||||
if (verbose)
|
||||
if (verbose) {
|
||||
prefs.put("upload.verbose", prefs.getOrExcept("upload.params.verbose"));
|
||||
else
|
||||
} else {
|
||||
prefs.put("upload.verbose", prefs.getOrExcept("upload.params.quiet"));
|
||||
}
|
||||
|
||||
boolean uploadResult;
|
||||
try {
|
||||
// if (prefs.get("upload.disable_flushing") == null
|
||||
// || prefs.get("upload.disable_flushing").toLowerCase().equals("false")) {
|
||||
// flushSerialBuffer();
|
||||
// }
|
||||
|
||||
String pattern = prefs.getOrExcept("upload.pattern");
|
||||
String[] cmd = StringReplacer.formatAndSplit(pattern, prefs, true);
|
||||
uploadResult = executeUploadCommand(cmd);
|
||||
@ -164,9 +162,9 @@ public class SerialUploader extends Uploader {
|
||||
throw new RunnerException(e);
|
||||
}
|
||||
|
||||
try {
|
||||
if (uploadResult && doTouch) {
|
||||
String uploadPort = PreferencesData.get("serial.port");
|
||||
if (uploadResult && doTouch) {
|
||||
try {
|
||||
String previousUploadPort = PreferencesData.get("serial.port");
|
||||
if (waitForUploadPort) {
|
||||
// For Due/Leonardo wait until the bootloader serial port disconnects and the
|
||||
// sketch serial port reconnects (or timeout after a few seconds if the
|
||||
@ -176,15 +174,18 @@ public class SerialUploader extends Uploader {
|
||||
long started = System.currentTimeMillis();
|
||||
while (System.currentTimeMillis() - started < 2000) {
|
||||
List<String> portList = Serial.list();
|
||||
if (portList.contains(uploadPort))
|
||||
if (portList.contains(previousUploadPort)) {
|
||||
break;
|
||||
}
|
||||
Thread.sleep(250);
|
||||
}
|
||||
}
|
||||
} catch (InterruptedException ex) {
|
||||
// noop
|
||||
}
|
||||
} catch (InterruptedException ex) {
|
||||
// noop
|
||||
}
|
||||
|
||||
BaseNoGui.selectSerialPort(uploadPort);
|
||||
return uploadResult;
|
||||
}
|
||||
|
||||
|
@ -1082,10 +1082,11 @@ public class BaseNoGui {
|
||||
|
||||
public static void selectSerialPort(String port) {
|
||||
PreferencesData.set("serial.port", port);
|
||||
if (port.startsWith("/dev/"))
|
||||
PreferencesData.set("serial.port.file", port.substring(5));
|
||||
else
|
||||
PreferencesData.set("serial.port.file", port);
|
||||
String portFile = port;
|
||||
if (port.startsWith("/dev/")) {
|
||||
portFile = portFile.substring(5);
|
||||
}
|
||||
PreferencesData.set("serial.port.file", portFile);
|
||||
}
|
||||
|
||||
public static void setBuildFolder(File newBuildFolder) {
|
||||
|
Reference in New Issue
Block a user