Added ability to save UDS scan log, fixed bug with aborting a UDS scan

This commit is contained in:
Collin Kidder
2017-05-11 21:58:55 -04:00
parent d38b94120d
commit 521009ec2b
3 changed files with 48 additions and 0 deletions
+40
View File
@@ -20,6 +20,7 @@ UDSScanWindow::UDSScanWindow(const QVector<CANFrame> *frames, QWidget *parent) :
connect(CANConManager::getInstance(), &CANConManager::framesReceived, this, &UDSScanWindow::rapidFrames);
connect(ui->btnScan, &QPushButton::clicked, this, &UDSScanWindow::scanUDS);
connect(waitTimer, &QTimer::timeout, this, &UDSScanWindow::timeOut);
connect(ui->btnSaveResults, &QPushButton::clicked, this, &UDSScanWindow::saveResults);
int numBuses = CANConManager::getInstance()->getNumBuses();
for (int n = 0; n < numBuses; n++) ui->cbBuses->addItem(QString::number(n));
@@ -33,6 +34,44 @@ UDSScanWindow::~UDSScanWindow()
delete waitTimer;
}
void UDSScanWindow::saveResults()
{
QString filename;
QFileDialog dialog(this);
QStringList filters;
filters.append(QString(tr("Text File (*.txt)")));
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
if (dialog.exec() == QDialog::Accepted)
{
filename = dialog.selectedFiles()[0];
if (!filename.contains('.')) filename += ".txt";
if (dialog.selectedNameFilter() == filters[0])
{
QFile *outFile = new QFile(filename);
if (!outFile->open(QIODevice::WriteOnly | QIODevice::Text))
{
delete outFile;
return;
}
for (int i = 0; i < ui->listResults->count(); i++)
{
outFile->write(ui->listResults->item(i)->text().toUtf8());
outFile->write("\n");
}
outFile->close();
delete outFile;
}
}
}
void UDSScanWindow::sendOnBuses(CANFrame &frame, int buses)
{
if (buses < ui->cbBuses->count()- 1)
@@ -58,6 +97,7 @@ void UDSScanWindow::scanUDS()
sendingFrames.clear();
currentlyRunning = false;
ui->btnScan->setText("Start Scan");
return;
}
waitTimer->setInterval(ui->spinDelay->value());
+1
View File
@@ -22,6 +22,7 @@ private slots:
void updatedFrames(int numFrames);
void rapidFrames(const CANConnection* conn, const QVector<CANFrame>& pFrames);
void scanUDS();
void saveResults();
void timeOut();
private:
+7
View File
@@ -24,6 +24,13 @@
<item>
<widget class="QListWidget" name="listResults"/>
</item>
<item>
<widget class="QPushButton" name="btnSaveResults">
<property name="text">
<string>Save Scan Results</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>