#include "mainwindow.h" #include "ui_mainwindow.h" #include "can_structs.h" #include #include #include "canframemodel.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); model = new CANFrameModel(); ui->canFramesView->setModel(model); QStringList headers; headers << "Timestamp" << "ID" << "Ext" << "Bus" << "Len" << "Data"; //model->setHorizontalHeaderLabels(headers); ui->canFramesView->setColumnWidth(0, 110); ui->canFramesView->setColumnWidth(1, 70); ui->canFramesView->setColumnWidth(2, 40); ui->canFramesView->setColumnWidth(3, 40); ui->canFramesView->setColumnWidth(4, 40); ui->canFramesView->setColumnWidth(5, 300); } MainWindow::~MainWindow() { delete ui; } void MainWindow::addFrameToDisplay(CANFrame &frame) { model->addFrame(frame); } void MainWindow::loadCRTDFile(QString filename) { } void MainWindow::loadNativeCSVFile(QString filename) { QFile *inFile = new QFile(filename); CANFrame thisFrame; if (!inFile->open(QIODevice::ReadOnly | QIODevice::Text)) return; while (!inFile->atEnd()) { QByteArray line = inFile->readLine(); if (line.length() > 2) { QList tokens = line.split(','); if (tokens[0].length() > 10) { long long temp = tokens[0].toInt(); thisFrame.timestamp = temp; } else { QDateTime stamp = QDateTime::currentDateTime(); thisFrame.timestamp = (long)(((stamp.time().hour() * 3600) + (stamp.time().minute() * 60) + (stamp.time().second()) * 1000) + stamp.time().msec()); } thisFrame.ID = tokens[1].toInt(NULL, 16); thisFrame.extended = tokens[2].toInt(); thisFrame.bus = tokens[3].toInt(); thisFrame.len = tokens[4].toInt(); for (int c = 0; c < 8; c++) thisFrame.data[c] = 0; for (int d = 0; d < thisFrame.len; d++) thisFrame.data[d] = tokens[5 + d].toInt(NULL, 16); addFrameToDisplay(thisFrame); } } inFile->close(); model->sendRefresh(); } void MainWindow::loadGenericCSVFile(QString filename) { } void MainWindow::loadLogFile(QString filename) { } void MainWindow::loadMicrochipFile(QString filename) { } void MainWindow::handleLoadFile() { QString filename; QFileDialog dialog(this); QStringList filters; filters.append(QString(tr("CRTD Logs (*.txt)"))); 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)"))); dialog.setFileMode(QFileDialog::ExistingFile); dialog.setNameFilters(filters); dialog.setViewMode(QFileDialog::Detail); if (dialog.exec()) { filename = dialog.selectedFiles()[0]; } if (dialog.selectedNameFilter() == filters[0]) loadCRTDFile(filename); if (dialog.selectedNameFilter() == filters[1]) loadNativeCSVFile(filename); if (dialog.selectedNameFilter() == filters[2]) loadGenericCSVFile(filename); if (dialog.selectedNameFilter() == filters[3]) loadLogFile(filename); if (dialog.selectedNameFilter() == filters[4]) loadMicrochipFile(filename); }