diff --git a/src/common/pm3process.cpp b/src/common/pm3process.cpp index 0546e2c..9af256b 100644 --- a/src/common/pm3process.cpp +++ b/src/common/pm3process.cpp @@ -13,6 +13,8 @@ PM3Process::PM3Process(QThread* thread, QObject* parent): QProcess(parent) connect(serialListener, &QTimer::timeout, this, &PM3Process::onTimeout); connect(this, &PM3Process::readyRead, this, &PM3Process::onReadyRead); portInfo = nullptr; + + qRegisterMetaType("QProcess::ProcessError"); } void PM3Process::connectPM3(const QString& path, const QStringList args) @@ -61,6 +63,8 @@ void PM3Process::connectPM3(const QString& path, const QStringList args) else kill(); } + + setRequiringOutput(false); } void PM3Process::reconnectPM3() diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 59efc1d..db13580 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -195,6 +195,14 @@ void MainWindow::on_PM3_connectButton_clicked() envSetProcess.kill(); } +void MainWindow::onPM3ErrorOccurred(QProcess::ProcessError error) +{ + qDebug() << "PM3 Error:" << error << pm3->errorString(); + if(error == QProcess::FailedToStart) + QMessageBox::information(this, tr("Info"), tr("Failed to start the client")); + +} + void MainWindow::onPM3StateChanged(bool st, const QString& info) { pm3state = st; @@ -1093,6 +1101,7 @@ void MainWindow::signalInit() connect(this, &MainWindow::reconnectPM3, pm3, &PM3Process::reconnectPM3); connect(pm3, &PM3Process::PM3StatedChanged, this, &MainWindow::onPM3StateChanged); connect(pm3, &PM3Process::PM3StatedChanged, util, &Util::setRunningState); + connect(pm3, &PM3Process::errorOccurred, this, &MainWindow::onPM3ErrorOccurred); connect(this, &MainWindow::killPM3, pm3, &PM3Process::killPM3); connect(this, &MainWindow::setProcEnv, pm3, &PM3Process::setProcEnv); connect(this, &MainWindow::setWorkingDir, pm3, &PM3Process::setWorkingDir); diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 5eaef2f..135be32 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -60,6 +60,7 @@ public slots: void MF_onMFCardTypeChanged(int id, bool st); void on_Raw_keyPressed(QObject *obj_addr, QEvent &event); void on_MF_keyWidget_resized(QObject *obj_addr, QEvent &event); + void onPM3ErrorOccurred(QProcess::ProcessError error); private slots: void on_PM3_connectButton_clicked();