More implementation of DBC signal editor (Now viewing is pretty well completely working)
This commit is contained in:
+120
-34
@@ -8,44 +8,26 @@ DBCSignalEditor::DBCSignalEditor(DBCHandler *handler, QWidget *parent) :
|
||||
ui->setupUi(this);
|
||||
dbcHandler = handler;
|
||||
dbcMessage = NULL;
|
||||
/*
|
||||
QStringList headers;
|
||||
headers << "Node Name" << "Comment";
|
||||
ui->signalsTable->setColumnCount(2);
|
||||
ui->signalsTable->setColumnWidth(0, 240);
|
||||
ui->signalsTable->setColumnWidth(1, 700);
|
||||
ui->signalsTable->setHorizontalHeaderLabels(headers);
|
||||
ui->signalsTable->horizontalHeader()->setStretchLastSection(true);
|
||||
name,
|
||||
a start bit,
|
||||
a length,
|
||||
byte order (intel or motorola),
|
||||
a type (signed, unsigned, float, string),
|
||||
a scaling factor,
|
||||
a bias,
|
||||
a minimum and
|
||||
maximum,
|
||||
a receiving node,
|
||||
a unit name,
|
||||
an optional comment,
|
||||
and an optional value list
|
||||
|
||||
|
||||
|
||||
|
||||
QStringList headers2;
|
||||
headers2 << "Msg ID" << "Msg Name" << "Data Len" << "Signals" << "Comment";
|
||||
ui->MessagesTable->setColumnCount(5);
|
||||
ui->MessagesTable->setColumnWidth(0, 80);
|
||||
ui->MessagesTable->setColumnWidth(1, 240);
|
||||
ui->MessagesTable->setColumnWidth(2, 80);
|
||||
ui->MessagesTable->setColumnWidth(3, 80);
|
||||
ui->MessagesTable->setColumnWidth(4, 340);
|
||||
ui->MessagesTable->setHorizontalHeaderLabels(headers2);
|
||||
ui->MessagesTable->horizontalHeader()->setStretchLastSection(true);
|
||||
headers2 << "Value" << "Text";
|
||||
ui->valuesTable->setColumnCount(2);
|
||||
ui->valuesTable->setColumnWidth(0, 200);
|
||||
ui->valuesTable->setColumnWidth(1, 440);
|
||||
ui->valuesTable->setHorizontalHeaderLabels(headers2);
|
||||
ui->valuesTable->horizontalHeader()->setStretchLastSection(true);
|
||||
|
||||
*/
|
||||
ui->comboType->addItem("INTEGER");
|
||||
ui->comboType->addItem("SINGLE PRECISION");
|
||||
ui->comboType->addItem("DOUBLE PRECISION");
|
||||
ui->comboType->addItem("STRING");
|
||||
|
||||
for (int x = 0; x < dbcHandler->dbc_nodes.count(); x++)
|
||||
{
|
||||
ui->comboReceiver->addItem(dbcHandler->dbc_nodes[x].name);
|
||||
}
|
||||
|
||||
connect(ui->signalsList, SIGNAL(currentRowChanged(int)), this, SLOT(clickSignalList(int)));
|
||||
}
|
||||
|
||||
DBCSignalEditor::~DBCSignalEditor()
|
||||
@@ -62,4 +44,108 @@ void DBCSignalEditor::showEvent(QShowEvent* event)
|
||||
{
|
||||
QDialog::showEvent(event);
|
||||
|
||||
refreshSignalsList();
|
||||
fillSignalForm(&dbcMessage->msgSignals[0]);
|
||||
fillValueTable(&dbcMessage->msgSignals[0]);
|
||||
}
|
||||
|
||||
void DBCSignalEditor::refreshSignalsList()
|
||||
{
|
||||
ui->signalsList->clear();
|
||||
for (int x = 0; x < dbcMessage->msgSignals.count(); x++)
|
||||
{
|
||||
DBC_SIGNAL sig = dbcMessage->msgSignals.at(x);
|
||||
ui->signalsList->addItem(sig.name);
|
||||
}
|
||||
}
|
||||
|
||||
void DBCSignalEditor::fillSignalForm(DBC_SIGNAL *sig)
|
||||
{
|
||||
unsigned char bitpattern[8];
|
||||
|
||||
|
||||
|
||||
|
||||
ui->txtName->setText(sig->name);
|
||||
ui->txtBias->setText(QString::number(sig->bias));
|
||||
ui->txtBitLength->setText(QString::number(sig->signalSize));
|
||||
ui->txtComment->setText(sig->comment);
|
||||
ui->txtMaxVal->setText(QString::number(sig->max));
|
||||
ui->txtMinVal->setText(QString::number(sig->min));
|
||||
ui->txtScale->setText(QString::number(sig->factor));
|
||||
ui->txtUnitName->setText(sig->unitName);
|
||||
|
||||
memset(bitpattern, 0, 8); //clear it out first.
|
||||
int startBit, endBit, startByte, bitWithinByteStart;
|
||||
|
||||
startBit = sig->startBit;
|
||||
startByte = startBit / 8;
|
||||
bitWithinByteStart = startBit % 8;
|
||||
if (sig->intelByteOrder)
|
||||
{
|
||||
bitWithinByteStart = 7 - bitWithinByteStart;
|
||||
startBit = (startByte * 8) + bitWithinByteStart;
|
||||
}
|
||||
|
||||
endBit = startBit + sig->signalSize - 1;
|
||||
|
||||
for (int y = startBit; y <= endBit; y++)
|
||||
{
|
||||
int byt = y / 8;
|
||||
bitpattern[byt] |= 1 << (y % 8);
|
||||
}
|
||||
ui->bitfield->setReference(bitpattern, false);
|
||||
ui->bitfield->updateData(bitpattern, true);
|
||||
|
||||
ui->cbIntelFormat->setChecked(sig->intelByteOrder);
|
||||
|
||||
switch (sig->valType)
|
||||
{
|
||||
case UNSIGNED_INT:
|
||||
case SIGNED_INT:
|
||||
ui->comboType->setCurrentIndex(0);
|
||||
break;
|
||||
case SP_FLOAT:
|
||||
ui->comboType->setCurrentIndex(1);
|
||||
break;
|
||||
case DP_FLOAT:
|
||||
ui->comboType->setCurrentIndex(2);
|
||||
break;
|
||||
case STRING:
|
||||
ui->comboType->setCurrentIndex(3);
|
||||
break;
|
||||
}
|
||||
|
||||
for (int i = 0; i < ui->comboReceiver->count(); i++)
|
||||
{
|
||||
if (ui->comboReceiver->itemText(i) == sig->receiver->name)
|
||||
{
|
||||
ui->comboReceiver->setCurrentIndex(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DBCSignalEditor::fillValueTable(DBC_SIGNAL *sig)
|
||||
{
|
||||
int rowIdx;
|
||||
ui->valuesTable->clearContents();
|
||||
ui->valuesTable->setRowCount(0);
|
||||
for (int i = 0; i < sig->valList.count(); i++)
|
||||
{
|
||||
QTableWidgetItem *val = new QTableWidgetItem(QString::number(sig->valList[i].value));
|
||||
QTableWidgetItem *desc = new QTableWidgetItem(sig->valList[i].descript);
|
||||
rowIdx = ui->valuesTable->rowCount();
|
||||
ui->valuesTable->insertRow(rowIdx);
|
||||
ui->valuesTable->setItem(rowIdx, 0, val);
|
||||
ui->valuesTable->setItem(rowIdx, 1, desc);
|
||||
}
|
||||
}
|
||||
|
||||
void DBCSignalEditor::clickSignalList(int row)
|
||||
{
|
||||
DBC_SIGNAL *thisSig = dbcHandler->findSignalByName(dbcMessage, ui->signalsList->item(row)->text());
|
||||
fillSignalForm(thisSig);
|
||||
fillValueTable(thisSig);
|
||||
|
||||
}
|
||||
|
||||
@@ -18,10 +18,17 @@ public:
|
||||
void showEvent(QShowEvent*);
|
||||
~DBCSignalEditor();
|
||||
|
||||
private slots:
|
||||
void clickSignalList(int);
|
||||
|
||||
private:
|
||||
Ui::DBCSignalEditor *ui;
|
||||
DBCHandler *dbcHandler;
|
||||
DBC_MESSAGE *dbcMessage;
|
||||
|
||||
void refreshSignalsList();
|
||||
void fillSignalForm(DBC_SIGNAL *sig);
|
||||
void fillValueTable(DBC_SIGNAL *sig);
|
||||
};
|
||||
|
||||
#endif // DBCSIGNALEDITOR_H
|
||||
|
||||
+16
-16
@@ -7,17 +7,17 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>884</width>
|
||||
<height>530</height>
|
||||
<height>791</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Signal Editor</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,1,5">
|
||||
<layout class="QVBoxLayout" name="verticalLayout" stretch="10,1,5">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,2">
|
||||
<item>
|
||||
<widget class="QListWidget" name="listWidget"/>
|
||||
<widget class="QListWidget" name="signalsList"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
@@ -33,7 +33,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit"/>
|
||||
<widget class="QLineEdit" name="txtName"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
@@ -43,7 +43,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="CANDataGrid" name="widget" native="true">
|
||||
<widget class="CANDataGrid" name="bitfield" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
@@ -67,10 +67,10 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_2"/>
|
||||
<widget class="QLineEdit" name="txtBitLength"/>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="checkBox">
|
||||
<widget class="QCheckBox" name="cbIntelFormat">
|
||||
<property name="text">
|
||||
<string>Intel (Little Endian)</string>
|
||||
</property>
|
||||
@@ -133,28 +133,28 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QComboBox" name="comboBox"/>
|
||||
<widget class="QComboBox" name="comboType"/>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_3"/>
|
||||
<widget class="QLineEdit" name="txtScale"/>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_4"/>
|
||||
<widget class="QLineEdit" name="txtBias"/>
|
||||
</item>
|
||||
<item row="7" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_5"/>
|
||||
<widget class="QLineEdit" name="txtMinVal"/>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_6"/>
|
||||
<widget class="QLineEdit" name="txtMaxVal"/>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_7"/>
|
||||
<widget class="QLineEdit" name="txtUnitName"/>
|
||||
</item>
|
||||
<item row="10" column="1">
|
||||
<widget class="QComboBox" name="comboBox_2"/>
|
||||
<widget class="QComboBox" name="comboReceiver"/>
|
||||
</item>
|
||||
<item row="12" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_8"/>
|
||||
<widget class="QLineEdit" name="txtComment"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
||||
Reference in New Issue
Block a user