Added a setting that allows for limiting the number of bytes per line.

This is useful if you have a 1920x1080 monitor or smaller resolution
but you want to capture 64 byte payloads. The default is 8 bytes but
usually 16 bytes is fine.
This commit is contained in:
Collin Kidder
2022-12-08 20:35:33 -05:00
parent 8ff3459c75
commit e1f06be6fd
5 changed files with 42 additions and 3 deletions
+9 -1
View File
@@ -76,6 +76,12 @@ CANFrameModel::CANFrameModel(QObject *parent)
lastUpdateNumFrames = 0; lastUpdateNumFrames = 0;
timeFormat = "MMM-dd HH:mm:ss.zzz"; timeFormat = "MMM-dd HH:mm:ss.zzz";
sortDirAsc = false; sortDirAsc = false;
bytesPerLine = 8;
}
void CANFrameModel::setBytesPerLine(int bpl)
{
bytesPerLine = bpl;
} }
void CANFrameModel::setHexMode(bool mode) void CANFrameModel::setHexMode(bool mode)
@@ -514,6 +520,7 @@ QVariant CANFrameModel::data(const QModelIndex &index, int role) const
if (byt < 0x20) byt = 0x2E; //dot character if (byt < 0x20) byt = 0x2E; //dot character
if (byt > 0x7E) byt = 0x2E; if (byt > 0x7E) byt = 0x2E;
tempString.append(QString::fromUtf8(&byt, 1)); tempString.append(QString::fromUtf8(&byt, 1));
if (!((i+1) % bytesPerLine) && (i != (dataLen - 1))) tempString.append("\n");
} }
} }
if (thisFrame.frameType() == QCanBusFrame::ErrorFrame) if (thisFrame.frameType() == QCanBusFrame::ErrorFrame)
@@ -531,7 +538,8 @@ QVariant CANFrameModel::data(const QModelIndex &index, int role) const
{ {
if (useHexMode) tempString.append( QString::number(data[i], 16).toUpper().rightJustified(2, '0')); if (useHexMode) tempString.append( QString::number(data[i], 16).toUpper().rightJustified(2, '0'));
else tempString.append(QString::number(data[i], 10)); else tempString.append(QString::number(data[i], 10));
tempString.append(" "); if (!((i+1) % bytesPerLine) && (i != (dataLen - 1))) tempString.append("\n");
else tempString.append(" ");
} }
if (thisFrame.frameType() == thisFrame.ErrorFrame) if (thisFrame.frameType() == thisFrame.ErrorFrame)
{ {
+2
View File
@@ -55,6 +55,7 @@ public:
void setAllFilters(bool state); void setAllFilters(bool state);
void setSecondsMode(bool); void setSecondsMode(bool);
void setTimeFormat(QString); void setTimeFormat(QString);
void setBytesPerLine(int bpl);
void loadFilterFile(QString filename); void loadFilterFile(QString filename);
void saveFilterFile(QString filename); void saveFilterFile(QString filename);
void normalizeTiming(); void normalizeTiming();
@@ -101,6 +102,7 @@ private:
int lastUpdateNumFrames; int lastUpdateNumFrames;
uint32_t preallocSize; uint32_t preallocSize;
bool sortDirAsc; bool sortDirAsc;
int bytesPerLine;
}; };
+4 -1
View File
@@ -21,7 +21,7 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) :
ui->comboSendingBus->addItem(tr("None")); ui->comboSendingBus->addItem(tr("None"));
ui->comboSendingBus->addItem(tr("0")); ui->comboSendingBus->addItem(tr("0"));
ui->comboSendingBus->addItem(tr("1")); ui->comboSendingBus->addItem(tr("1"));
ui->comboSendingBus->addItem(tr("Both")); ui->comboSendingBus->addItem(tr("All"));
ui->comboSendingBus->addItem(tr("From File")); ui->comboSendingBus->addItem(tr("From File"));
//update the GUI with all the settings we have stored giving things //update the GUI with all the settings we have stored giving things
@@ -104,6 +104,7 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) :
} }
ui->spinMaximumFrames->setValue(settings.value("Main/MaximumFrames", maxFramesDefault).toInt()); ui->spinMaximumFrames->setValue(settings.value("Main/MaximumFrames", maxFramesDefault).toInt());
ui->spinBytesPerLine->setValue(settings.value("Main/BytesPerLine", 8).toInt());
//just for simplicity they all call the same function and that function updates all settings at once //just for simplicity they all call the same function and that function updates all settings at once
connect(ui->cbDisplayHex, SIGNAL(toggled(bool)), this, SLOT(updateSettings())); connect(ui->cbDisplayHex, SIGNAL(toggled(bool)), this, SLOT(updateSettings()));
@@ -134,6 +135,7 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) :
connect(ui->cbIgnoreDBCColors, SIGNAL(toggled(bool)), this, SLOT(updateSettings())); connect(ui->cbIgnoreDBCColors, SIGNAL(toggled(bool)), this, SLOT(updateSettings()));
connect(ui->spinMaximumFrames, SIGNAL(valueChanged(int)), this, SLOT(updateSettings())); connect(ui->spinMaximumFrames, SIGNAL(valueChanged(int)), this, SLOT(updateSettings()));
connect(ui->cbFontFixedWidth, SIGNAL(toggled(bool)), this, SLOT(updateSettings())); connect(ui->cbFontFixedWidth, SIGNAL(toggled(bool)), this, SLOT(updateSettings()));
connect(ui->spinBytesPerLine, SIGNAL(valueChanged(int)), this, SLOT(updateSettings()));
installEventFilter(this); installEventFilter(this);
} }
@@ -201,6 +203,7 @@ void MainSettingsDialog::updateSettings()
settings.setValue("Main/FilterLabeling", ui->cbFilterLabeling->isChecked()); settings.setValue("Main/FilterLabeling", ui->cbFilterLabeling->isChecked());
settings.setValue("Main/IgnoreDBCColors", ui->cbIgnoreDBCColors->isChecked()); settings.setValue("Main/IgnoreDBCColors", ui->cbIgnoreDBCColors->isChecked());
settings.setValue("Main/MaximumFrames", ui->spinMaximumFrames->value()); settings.setValue("Main/MaximumFrames", ui->spinMaximumFrames->value());
settings.setValue("Main/BytesPerLine", ui->spinBytesPerLine->value());
settings.setValue("Main/FontFixedWidth", ui->cbFontFixedWidth->isChecked()); settings.setValue("Main/FontFixedWidth", ui->cbFontFixedWidth->isChecked());
settings.sync(); settings.sync();
+2
View File
@@ -392,6 +392,8 @@ void MainWindow::readUpdateableSettings()
model->setTimeFormat(settings.value("Main/TimeFormat", "MMM-dd HH:mm:ss.zzz").toString()); model->setTimeFormat(settings.value("Main/TimeFormat", "MMM-dd HH:mm:ss.zzz").toString());
ignoreDBCColors = settings.value("Main/IgnoreDBCColors", false).toBool(); ignoreDBCColors = settings.value("Main/IgnoreDBCColors", false).toBool();
model->setIgnoreDBCColors(ignoreDBCColors); model->setIgnoreDBCColors(ignoreDBCColors);
int bpl = settings.value("Main/BytesPerLine", 8).toInt();
model->setBytesPerLine(bpl);
if (settings.value("Main/FilterLabeling", false).toBool()) if (settings.value("Main/FilterLabeling", false).toBool())
ui->listFilters->setMaximumWidth(250); ui->listFilters->setMaximumWidth(250);
+25 -1
View File
@@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>965</width> <width>965</width>
<height>713</height> <height>815</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -29,6 +29,30 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QLabel" name="label_12">
<property name="text">
<string>Maximum data bytes per line</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBytesPerLine">
<property name="minimum">
<number>8</number>
</property>
<property name="maximum">
<number>64</number>
</property>
<property name="singleStep">
<number>8</number>
</property>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>