diff --git a/src/common/pm3process.cpp b/src/common/pm3process.cpp index 76c13b8..bb102e4 100644 --- a/src/common/pm3process.cpp +++ b/src/common/pm3process.cpp @@ -22,6 +22,7 @@ void PM3Process::connectPM3(const QString& path, const QStringList args) QString result; Util::ClientType clientType; setRequiringOutput(true); + QRegularExpression osPattern("(os:\\s+|OS\\.+\\s+)"); // stash for reconnect currPath = path; @@ -44,7 +45,8 @@ void PM3Process::connectPM3(const QString& path, const QStringList args) { waitForReadyRead(200); result += *requiredOutput; - if(result.contains("os: ")) + // if(result.contains("os: ")) + if(osPattern.match(result).hasMatch()) break; } setRequiringOutput(false); @@ -53,12 +55,16 @@ void PM3Process::connectPM3(const QString& path, const QStringList args) { clientType = Util::CLIENTTYPE_OFFICIAL; } - if(result.contains("os: ")) // make sure the PM3 is connected + // if(result.contains("os: ")) // make sure the PM3 is connected + if(osPattern.match(result).hasMatch()) { emit changeClientType(clientType); - result = result.mid(result.indexOf("os: ")); + // result = result.mid(result.indexOf("os: ")); + QRegularExpressionMatch osMatch = osPattern.match(result); + result = result.mid(osMatch.capturedStart()); result = result.left(result.indexOf("\n")); - result = result.mid(4, result.indexOf(" ", 4) - 4); + // result = result.mid(4, result.indexOf(" ", 4) - 4); + result = result.mid(osMatch.capturedLength(), result.indexOf(" ", osMatch.capturedLength()) - osMatch.capturedLength()); emit PM3StatedChanged(true, result); } else