Added first project implementation

This commit is contained in:
Yury Shuvakin
2024-01-22 18:45:09 +09:00
parent 065decd584
commit 9e957f29fe
12 changed files with 893 additions and 0 deletions

112
LogParser.cpp Normal file
View File

@@ -0,0 +1,112 @@
#include "LogParser.h"
#include <QDir>
#include <QFile>
#include <QDebug>
LogParser::LogParser(QObject* parent)
: QObject{parent}
{
logFolder = "C:/Users/Yury/Documents/M1300LogFolder";
}
LogParser::~LogParser()
{
}
void LogParser::setLogFolder(const QString& folder)
{
logFolder = folder;
}
void LogParser::setStartDateTime(const QDateTime& dateTime)
{
startDateTime = dateTime;
}
void LogParser::setEndDateTime(const QDateTime& dateTime)
{
endDateTime = dateTime;
}
QString LogParser::getLogFolder() const
{
return logFolder;
}
QDateTime LogParser::getStartDateTime() const
{
return startDateTime;
}
QDateTime LogParser::getEndDateTime() const
{
return endDateTime;
}
QStringList LogParser::logFilesByDateTime() const
{
QStringList files;
for (const auto& fileInfo: QDir(logFolder).entryInfoList())
{
const auto fileTime = fileInfo.baseName();
auto date = QDateTime::fromString(fileTime, "yyMMdd_hhmmss");
if (date.date().year() < 2000)
{
date = date.addYears(100);
}
if (date.isValid() && date >= startDateTime && date <= endDateTime)
{
files.append(fileInfo.absoluteFilePath());
}
}
return files;
}
QList<DataTypes::LogMessage> LogParser::logMessagesByDateTime() const
{
QList<DataTypes::LogMessage> logMessages;
const auto logFiles = logFilesByDateTime();
for (const auto& logFile: logFiles)
{
QFile file(logFile);
if (!file.open(QFile::ReadOnly))
{
qWarning() << "Can't open" << logFile;
continue;
}
while (!file.atEnd())
{
const auto line = QString::fromUtf8(file.readLine());
if (line.startsWith("RTC"))
{
continue;
}
const auto parameters = line.split(';');
if (parameters.size() < 7)
{
continue;
}
DataTypes::LogMessage message;
message.dateTime = QDateTime::fromSecsSinceEpoch(parameters.at(0).toULongLong());
message.startupTime = parameters.at(1).toULongLong();
message.type = static_cast<DataTypes::MessageType>(parameters.at(2).toUInt());
message.f1 = parameters.at(3).toLongLong();
message.f2 = parameters.at(4).toLongLong();
message.f3 = parameters.at(5).toLongLong();
message.f4 = parameters.at(6).toLongLong();
// qDebug() << message.dateTime << message.startupTime << int(message.type);
logMessages.append(message);
}
}
return logMessages;
}