diff --git a/src/CommPort.cpp b/src/CommPort.cpp index b590c5eee..c4ecdd311 100644 --- a/src/CommPort.cpp +++ b/src/CommPort.cpp @@ -33,15 +33,18 @@ CommPort::addListFunction(ListFunction f) QVector CommPort::listCommPorts(QString &err) { - err = ""; + QStringList errors; QVector result; for (int i = 0; listFunctions && i < listFunctions->size(); ++i) { - QVector tmp = (*listFunctions)[i](err); - if (err == "") + QString thisError = ""; + QVector tmp = (*listFunctions)[i](thisError); + if (thisError == "") result << tmp; else - err += "\n"; + errors << thisError; } + if (result.isEmpty() && !errors.isEmpty()) + err = errors.join("\n"); return result; } diff --git a/src/DownloadRideDialog.cpp b/src/DownloadRideDialog.cpp index babc9262d..304f0c2e0 100644 --- a/src/DownloadRideDialog.cpp +++ b/src/DownloadRideDialog.cpp @@ -106,8 +106,8 @@ DownloadRideDialog::scanCommPorts() QString err; devList = CommPort::listCommPorts(err); if (err != "") { - QString msg = "Warning:\n\n" + err + "You may need to (re)install " - "the FTDI drivers before downloading."; + QString msg = "Warning(s):\n\n" + err + "\n\nYou may need to (re)install " + "the FTDI or PL2303 drivers before downloading."; QMessageBox::warning(0, "Error Loading Device Drivers", msg, QMessageBox::Ok, QMessageBox::NoButton); } diff --git a/src/Serial.cpp b/src/Serial.cpp index b01c57592..f1340df96 100644 --- a/src/Serial.cpp +++ b/src/Serial.cpp @@ -398,6 +398,8 @@ Serial::myListCommPorts(QString &err) QVector result; char *devices[MAX_DEVICES]; int devcnt = find_devices(devices, MAX_DEVICES); + if (devcnt == 0) + err = "No serial devices found."; for (int i = 0; i < devcnt; ++i) { result.append(CommPortPtr(new Serial(devices[i]))); free(devices[i]);