mirror of
https://github.com/wh201906/Proxmark3GUI.git
synced 2025-02-16 22:21:30 +08:00
More hints
For serial ports which look like PM3 hardware, show a '*' behind them. Show message box if the GUI fails to connect to the hardware
This commit is contained in:
parent
b2cb1ea8e7
commit
a9b19f92d6
@ -61,8 +61,11 @@ void PM3Process::connectPM3(const QString& path, const QStringList args)
|
|||||||
emit PM3StatedChanged(true, result);
|
emit PM3StatedChanged(true, result);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
emit HWConnectFailed();
|
||||||
kill();
|
kill();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
setRequiringOutput(false);
|
setRequiringOutput(false);
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,7 @@ signals:
|
|||||||
void PM3StatedChanged(bool st, const QString& info = "");
|
void PM3StatedChanged(bool st, const QString& info = "");
|
||||||
void newOutput(const QString& output);
|
void newOutput(const QString& output);
|
||||||
void changeClientType(Util::ClientType);
|
void changeClientType(Util::ClientType);
|
||||||
|
void HWConnectFailed();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PM3PROCESS_H
|
#endif // PM3PROCESS_H
|
||||||
|
@ -106,18 +106,31 @@ void MainWindow::initUI() // will be called by main.app
|
|||||||
|
|
||||||
void MainWindow::on_portSearchTimer_timeout()
|
void MainWindow::on_portSearchTimer_timeout()
|
||||||
{
|
{
|
||||||
QStringList newPortList;
|
QStringList newPortList; // for actural port name
|
||||||
|
QStringList newPortNameList; // for display name
|
||||||
|
// QStringList portList;
|
||||||
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
|
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
|
||||||
{
|
{
|
||||||
// qDebug() << info.isBusy() << info.isNull() << info.portName() << info.description();
|
// qDebug() << info.isNull() << info.portName() << info.description() << info.serialNumber() << info.manufacturer();
|
||||||
if(!info.isNull())
|
if(!info.isNull())
|
||||||
newPortList << info.portName();
|
{
|
||||||
|
QString idString = (info.description() + info.serialNumber() + info.manufacturer()).toUpper();
|
||||||
|
QString portName = info.portName();
|
||||||
|
const QString hint = " *";
|
||||||
|
newPortList << portName;
|
||||||
|
if(info.hasProductIdentifier() && info.hasVendorIdentifier() && info.vendorIdentifier() == 0x9AC4 && info.productIdentifier() == 0x4B8F)
|
||||||
|
portName += hint;
|
||||||
|
else if(idString.contains("proxmark") || idString.contains("iceman"))
|
||||||
|
portName += hint;
|
||||||
|
newPortNameList << portName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(newPortList != portList) // update PM3_portBox when available ports changed
|
if(newPortList != portList) // update PM3_portBox when available ports changed
|
||||||
{
|
{
|
||||||
portList = newPortList;
|
portList = newPortList;
|
||||||
ui->PM3_portBox->clear();
|
ui->PM3_portBox->clear();
|
||||||
ui->PM3_portBox->addItems(portList);
|
for(int i = 0; i < portList.size(); i++)
|
||||||
|
ui->PM3_portBox->addItem(newPortNameList[i], newPortList[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,7 +138,7 @@ void MainWindow::on_PM3_connectButton_clicked()
|
|||||||
{
|
{
|
||||||
qDebug() << "Main:" << QThread::currentThread();
|
qDebug() << "Main:" << QThread::currentThread();
|
||||||
|
|
||||||
QString port = ui->PM3_portBox->currentText();
|
QString port = ui->PM3_portBox->currentData().toString();
|
||||||
QString startArgs = ui->Set_Client_startArgsEdit->text();
|
QString startArgs = ui->Set_Client_startArgsEdit->text();
|
||||||
|
|
||||||
// on RRG repo, if no port is specified, the client will search the available port
|
// on RRG repo, if no port is specified, the client will search the available port
|
||||||
@ -200,7 +213,11 @@ void MainWindow::onPM3ErrorOccurred(QProcess::ProcessError error)
|
|||||||
qDebug() << "PM3 Error:" << error << pm3->errorString();
|
qDebug() << "PM3 Error:" << error << pm3->errorString();
|
||||||
if(error == QProcess::FailedToStart)
|
if(error == QProcess::FailedToStart)
|
||||||
QMessageBox::information(this, tr("Info"), tr("Failed to start the client"));
|
QMessageBox::information(this, tr("Info"), tr("Failed to start the client"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::onPM3HWConnectFailed()
|
||||||
|
{
|
||||||
|
QMessageBox::information(this, tr("Info"), tr("Failed to connect to the hardware"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::onPM3StateChanged(bool st, const QString& info)
|
void MainWindow::onPM3StateChanged(bool st, const QString& info)
|
||||||
@ -1104,6 +1121,7 @@ void MainWindow::signalInit()
|
|||||||
connect(pm3, &PM3Process::PM3StatedChanged, this, &MainWindow::onPM3StateChanged);
|
connect(pm3, &PM3Process::PM3StatedChanged, this, &MainWindow::onPM3StateChanged);
|
||||||
connect(pm3, &PM3Process::PM3StatedChanged, util, &Util::setRunningState);
|
connect(pm3, &PM3Process::PM3StatedChanged, util, &Util::setRunningState);
|
||||||
connect(pm3, &PM3Process::errorOccurred, this, &MainWindow::onPM3ErrorOccurred);
|
connect(pm3, &PM3Process::errorOccurred, this, &MainWindow::onPM3ErrorOccurred);
|
||||||
|
connect(pm3, &PM3Process::HWConnectFailed, this, &MainWindow::onPM3HWConnectFailed);
|
||||||
connect(this, &MainWindow::killPM3, pm3, &PM3Process::killPM3);
|
connect(this, &MainWindow::killPM3, pm3, &PM3Process::killPM3);
|
||||||
connect(this, &MainWindow::setProcEnv, pm3, &PM3Process::setProcEnv);
|
connect(this, &MainWindow::setProcEnv, pm3, &PM3Process::setProcEnv);
|
||||||
connect(this, &MainWindow::setWorkingDir, pm3, &PM3Process::setWorkingDir);
|
connect(this, &MainWindow::setWorkingDir, pm3, &PM3Process::setWorkingDir);
|
||||||
|
@ -61,6 +61,7 @@ public slots:
|
|||||||
void on_Raw_keyPressed(QObject *obj_addr, QEvent &event);
|
void on_Raw_keyPressed(QObject *obj_addr, QEvent &event);
|
||||||
void on_MF_keyWidget_resized(QObject *obj_addr, QEvent &event);
|
void on_MF_keyWidget_resized(QObject *obj_addr, QEvent &event);
|
||||||
void onPM3ErrorOccurred(QProcess::ProcessError error);
|
void onPM3ErrorOccurred(QProcess::ProcessError error);
|
||||||
|
void onPM3HWConnectFailed();
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
void on_PM3_connectButton_clicked();
|
void on_PM3_connectButton_clicked();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user