From 310d75761fdd0734dc5bc5b7bbd461ce5ceb3edf Mon Sep 17 00:00:00 2001 From: Collin Kidder Date: Tue, 11 Jul 2023 21:14:19 -0400 Subject: [PATCH] Add ability to save decoded CSV with absolute timestamp --- mainsettingsdialog.cpp | 3 +++ mainwindow.cpp | 31 ++++++++++++++++++++++++++----- mainwindow.h | 1 + ui/mainsettingsdialog.ui | 7 +++++++ 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/mainsettingsdialog.cpp b/mainsettingsdialog.cpp index ef6b293..eae6272 100644 --- a/mainsettingsdialog.cpp +++ b/mainsettingsdialog.cpp @@ -85,6 +85,7 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) : } } + ui->cbCSVAbsTime->setChecked(settings.value("Main/CSVAbsTime", false).toBool()); ui->comboSendingBus->setCurrentIndex(settings.value("Playback/SendingBus", 4).toInt()); ui->cbUseFiltered->setChecked(settings.value("Main/UseFiltered", false).toBool()); ui->cbUseOpenGL->setChecked(settings.value("Main/UseOpenGL", false).toBool()); @@ -120,6 +121,7 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) : connect(ui->rbMicros, SIGNAL(toggled(bool)), this, SLOT(updateSettings())); connect(ui->rbSysClock, SIGNAL(toggled(bool)), this, SLOT(updateSettings())); connect(ui->rbMillis, SIGNAL(toggled(bool)), this, SLOT(updateSettings())); + connect(ui->cbCSVAbsTime, SIGNAL(toggled(bool)), this, SLOT(updateSettings())); connect(ui->comboSendingBus, SIGNAL(currentIndexChanged(int)), this, SLOT(updateSettings())); connect(ui->cbUseFiltered, SIGNAL(toggled(bool)), this, SLOT(updateSettings())); connect(ui->lineClockFormat, SIGNAL(editingFinished()), this, SLOT(updateSettings())); @@ -190,6 +192,7 @@ void MainSettingsDialog::updateSettings() settings.setValue("Main/TimeSeconds", ui->rbSeconds->isChecked()); settings.setValue("Main/TimeMillis", ui->rbMillis->isChecked()); settings.setValue("Main/TimeClock", ui->rbSysClock->isChecked()); + settings.setValue("Main/CSVAbsTime", ui->cbCSVAbsTime->isChecked()); settings.setValue("Playback/SendingBus", ui->comboSendingBus->currentIndex()); settings.setValue("Main/UseFiltered", ui->cbUseFiltered->isChecked()); settings.setValue("Main/UseOpenGL", ui->cbUseOpenGL->isChecked()); diff --git a/mainwindow.cpp b/mainwindow.cpp index 7f8412e..b2718bd 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -405,6 +405,8 @@ void MainWindow::readUpdateableSettings() int bpl = settings.value("Main/BytesPerLine", 8).toInt(); model->setBytesPerLine(bpl); + CSVAbsTime = settings.value("Main/CSVAbsTime", false).toBool(); + if (settings.value("Main/FilterLabeling", false).toBool()) ui->listFilters->setMaximumWidth(250); else @@ -1102,9 +1104,17 @@ Data Bytes: 88 10 00 13 BB 00 06 00 int dataStartCol = 0; QString builderString; - //time - builderString += tr("Time") + ","; - dataStartCol++; + if (CSVAbsTime) + { + builderString += tr("Year") + "," + tr("Month") + "," + tr("Day") + "," + tr("Hour") + "," + tr("Minute") + "," + tr("Second") + "," + tr("Ms") + ","; + dataStartCol += 7; + } + else + { + //time + builderString += tr("Time") + ","; + dataStartCol++; + } //id builderString += tr("ID") + ","; dataStartCol++; @@ -1184,8 +1194,19 @@ Data Bytes: 88 10 00 13 BB 00 06 00 dataLen = frame->payload().count(); QString builderString; - builderString += QString::number((frame->timeStamp().microSeconds() / 1000000.0), 'f', 6) + ","; - dataColumnsAdded++; + if (CSVAbsTime) + { + QDateTime dt = QDateTime::fromMSecsSinceEpoch(frame->timeStamp().microSeconds() / 1000); + builderString += QString::number(dt.date().year()) + "," + QString::number(dt.date().month()) + ","; + builderString += QString::number(dt.date().day()) + "," + QString::number(dt.time().hour()) + ","; + builderString += QString::number(dt.time().minute()) + "," + QString::number(dt.time().second()) + ","; + builderString += QString::number(dt.time().msec()) + ","; + dataColumnsAdded += 7; + } + else { + builderString += QString::number((frame->timeStamp().microSeconds() / 1000000.0), 'f', 6) + ","; + dataColumnsAdded++; + } //id builderString += Utility::formatCANID(frame->frameId(), frame->hasExtendedFrameFormat()) + ","; dataColumnsAdded++; diff --git a/mainwindow.h b/mainwindow.h index 8cee46c..dbc7cdf 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -148,6 +148,7 @@ private: bool useHex; bool allowCapture; bool ignoreDBCColors; + bool CSVAbsTime; bool bDirty; //have frames been added or subtracted since the last save/load? bool useFiltered; //should sub-windows use the unfiltered or filtered frames list? diff --git a/ui/mainsettingsdialog.ui b/ui/mainsettingsdialog.ui index 04fb194..e65e91c 100644 --- a/ui/mainsettingsdialog.ui +++ b/ui/mainsettingsdialog.ui @@ -209,6 +209,13 @@ + + + + Use absolute time in decoded CSV output + + +