From c36684404a8889643b23de794c16d1c2eb96a26b Mon Sep 17 00:00:00 2001 From: Collin Kidder Date: Tue, 7 Jul 2015 20:51:55 -0400 Subject: [PATCH] Implemented the missing three save formats. Also incremented version num. --- config.h | 2 +- framefileio.cpp | 124 ++++++++++++++++++++++++++++++++++++++++++++++-- mainwindow.cpp | 4 +- 3 files changed, 122 insertions(+), 8 deletions(-) diff --git a/config.h b/config.h index dcbee6e..fe97184 100644 --- a/config.h +++ b/config.h @@ -1,7 +1,7 @@ #ifndef CONFIG #define CONFIG -#define VERSION 119 +#define VERSION 120 //try to keep this in sync. //SavvyCAN will complain if you connect a GVRET board with a revision diff --git a/framefileio.cpp b/framefileio.cpp index 771d5fb..1165ca4 100644 --- a/framefileio.cpp +++ b/framefileio.cpp @@ -16,7 +16,7 @@ QString FrameFileIO::loadFrameFile(QVector* frameCache) filters.append(QString(tr("GVRET Logs (*.csv)"))); filters.append(QString(tr("Generic ID/Data CSV (*.csv)"))); filters.append(QString(tr("BusMaster Log (*.log)"))); - filters.append(QString(tr("Microchip Log (*.log)"))); + filters.append(QString(tr("Microchip Log (*.can)"))); dialog.setFileMode(QFileDialog::ExistingFile); dialog.setNameFilters(filters); @@ -273,9 +273,33 @@ bool FrameFileIO::loadGenericCSVFile(QString filename, QVector* frames return true; } +//4f5,ff 34 23 45 24 e4 bool FrameFileIO::saveGenericCSVFile(QString filename, const QVector* frames) { - return false; + QFile *outFile = new QFile(filename); + + if (!outFile->open(QIODevice::WriteOnly | QIODevice::Text)) + return false; + + outFile->write("ID,Data Bytes"); + outFile->write("\n"); + + for (int c = 0; c < frames->count(); c++) + { + outFile->write(QString::number(frames->at(c).ID, 16).toUpper().rightJustified(8, '0').toUtf8()); + outFile->putChar(44); + + for (int temp = 0; temp < frames->at(c).len; temp++) + { + outFile->write(QString::number(frames->at(c).data[temp], 16).toUpper().rightJustified(2, '0').toUtf8()); + outFile->putChar(' '); + } + + outFile->write("\n"); + + } + outFile->close(); + return true; } //busmaster log file @@ -347,7 +371,52 @@ bool FrameFileIO::loadLogFile(QString filename, QVector* frames) bool FrameFileIO::saveLogFile(QString filename, const QVector* frames) { - return false; + QFile *outFile = new QFile(filename); + QDateTime timestamp, tempStamp; + + timestamp = QDateTime::currentDateTime(); + + if (!outFile->open(QIODevice::WriteOnly | QIODevice::Text)) + return false; + + outFile->write("***BUSMASTER Ver 2.4.0***\n"); + outFile->write("***PROTOCOL CAN***\n"); + outFile->write("***NOTE: PLEASE DO NOT EDIT THIS DOCUMENT***\n"); + outFile->write("***[START LOGGING SESSION]***\n"); + outFile->write("***START DATE AND TIME "); + outFile->write(timestamp.toString("d:M:yyyy h:m:s:z").toUtf8()); + outFile->write("***\n"); + outFile->write("***HEX***\n"); + outFile->write("***SYSTEM MODE***\n"); + outFile->write("***START CHANNEL BAUD RATE***\n"); + outFile->write("***CHANNEL 1 - Kvaser - Kvaser Leaf Light HS #0 (Channel 0), Serial Number- 0, Firmware- 0x00000037 0x00020000 - 500000 bps***\n"); + outFile->write("***END CHANNEL BAUD RATE***\n"); + outFile->write("***START DATABASE FILES (DBF/DBC)***\n"); + outFile->write("***END OF DATABASE FILES (DBF/DBC)***\n"); + outFile->write("***