Add ability to save decoded CSV with absolute timestamp

This commit is contained in:
Collin Kidder
2023-07-11 21:14:19 -04:00
parent e2438efac5
commit 310d75761f
4 changed files with 37 additions and 5 deletions
+3
View File
@@ -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());
+26 -5
View File
@@ -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++;
+1
View File
@@ -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?
+7
View File
@@ -209,6 +209,13 @@
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="cbCSVAbsTime">
<property name="text">
<string>Use absolute time in decoded CSV output</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>