Added ability to load and save graph definitions for signal based

graphs. Implemented code to support appending to signal based graphs.
This commit is contained in:
Collin Kidder
2016-01-11 22:14:42 -05:00
parent cdd4f23609
commit c8666b4147
+50 -1
View File
@@ -686,6 +686,15 @@ void GraphingWindow::saveDefinitions()
{ {
outFile->write(QString::number(iter->ID, 16).toUtf8()); outFile->write(QString::number(iter->ID, 16).toUtf8());
outFile->putChar(','); outFile->putChar(',');
if (iter->isDBCSignal)
{
outFile->putChar('S');
outFile->putChar(',');
outFile->write(iter->signal->name.toUtf8());
outFile->putChar(',');
}
else
{
outFile->write(QString::number(iter->mask, 16).toUtf8()); outFile->write(QString::number(iter->mask, 16).toUtf8());
outFile->putChar(','); outFile->putChar(',');
outFile->write(QString::number(iter->startByte).toUtf8()); outFile->write(QString::number(iter->startByte).toUtf8());
@@ -701,6 +710,7 @@ void GraphingWindow::saveDefinitions()
outFile->putChar(','); outFile->putChar(',');
outFile->write(QString::number(iter->stride).toUtf8()); outFile->write(QString::number(iter->stride).toUtf8());
outFile->putChar(','); outFile->putChar(',');
}
outFile->write(QString::number(iter->color.red()).toUtf8()); outFile->write(QString::number(iter->color.red()).toUtf8());
outFile->putChar(','); outFile->putChar(',');
outFile->write(QString::number(iter->color.green()).toUtf8()); outFile->write(QString::number(iter->color.green()).toUtf8());
@@ -741,8 +751,22 @@ void GraphingWindow::loadDefinitions()
{ {
GraphParams gp; GraphParams gp;
QList<QByteArray> tokens = line.split(','); QList<QByteArray> tokens = line.split(',');
gp.isDBCSignal = false;
gp.ID = tokens[0].toInt(NULL, 16); gp.ID = tokens[0].toInt(NULL, 16);
if (tokens[1] == "S")
{
gp.isDBCSignal = true;
//tokens[2] is the signal name. Need to use the message ID and this name to look it up
DBC_MESSAGE *msg = dbcHandler->findMsgByID(gp.ID);
if (msg != NULL)
{
gp.signal = dbcHandler->findSignalByName(msg, tokens[2]);
}
else gp.signal = NULL;
}
else
{
gp.mask = tokens[1].toULongLong(NULL, 16); gp.mask = tokens[1].toULongLong(NULL, 16);
qDebug() << gp.mask; qDebug() << gp.mask;
gp.startByte = tokens[2].toInt(); gp.startByte = tokens[2].toInt();
@@ -752,6 +776,9 @@ void GraphingWindow::loadDefinitions()
gp.bias = tokens[5].toFloat(); gp.bias = tokens[5].toFloat();
gp.scale = tokens[6].toFloat(); gp.scale = tokens[6].toFloat();
gp.stride = tokens[7].toInt(); gp.stride = tokens[7].toInt();
}
if (!gp.isDBCSignal)
{
gp.color.setRed(tokens[8].toInt()); gp.color.setRed(tokens[8].toInt());
gp.color.setGreen(tokens[9].toInt()); gp.color.setGreen(tokens[9].toInt());
gp.color.setBlue(tokens[10].toInt()); gp.color.setBlue(tokens[10].toInt());
@@ -759,6 +786,14 @@ void GraphingWindow::loadDefinitions()
gp.graphName = tokens[11]; gp.graphName = tokens[11];
else else
gp.graphName = QString(); gp.graphName = QString();
}
else
{
gp.color.setRed(tokens[3].toInt());
gp.color.setGreen(tokens[4].toInt());
gp.color.setBlue(tokens[5].toInt());
gp.graphName = tokens[6];
}
createGraph(gp, true); createGraph(gp, true);
} }
} }
@@ -801,7 +836,21 @@ void GraphingWindow::appendToGraph(GraphParams &params, CANFrame &frame)
int64_t tempVal; //64 bit temp value. int64_t tempVal; //64 bit temp value.
if (params.isDBCSignal) if (params.isDBCSignal)
{ {
double tempValue;
//if the given signal was found and successfully processed in this frame then add it to the graph
if (dbcHandler->processSignalDouble(frame, *params.signal, tempValue))
{
//qDebug() << "tempValue: " << tempValue;
if (secondsMode)
{
params.x.append((double)(frame.timestamp) / 1000000.0 - params.xbias);
}
else
{
params.x.append(frame.timestamp - params.xbias);
}
params.y.append(tempValue);
}
} }
else else
{ {