SXXXXXXX_PyBusMonitor1553/cpp/GrifoScope/GrifoXLruMonitor/xlrureportclass.cpp
2025-12-17 07:59:30 +01:00

174 lines
3.4 KiB
C++

#include "xlrureportclass.h"
#include <QDebug>
#include <QFile>
XlruReportClass::XlruReportClass():
file(0)
{
file_path = "";
file_name = "";
header_saved = false;
}
XlruReportClass::~XlruReportClass()
{
closeFile();
}
QString XlruReportClass::newNameFile(QString _header)
{
QDateTime dateTime;
dateTime = QDateTime::currentDateTime();
return QString("%1_%2_%3").arg(dateTime.toString("yyyyMMddhhmmss")).arg(_header).arg("xlru_monitor.csv");
}
QString XlruReportClass::generateNewFile(QString _header)
{
file_name = newNameFile(_header);
//file_path = QString("%1//%2").arg(QFileInfo(".").absolutePath()).arg(file_name);
file_path = QString("./%1").arg(file_name);
if (saveString(file_name))
{
closeFile();
return file_path;
}
else
return "";
}
bool XlruReportClass::saveString(QString _value)
{
if (!file.isOpen())
{
file.setFileName(file_path);
if ( !file.open(QFile::WriteOnly | QFile::Text | QIODevice::Append) )
{
qDebug() << "File not exists";
return false;
}
}
// Create a thread to retrieve data from a file
QTextStream out(&file);
out << _value << "\n";
//file.close();
return true;
}
bool XlruReportClass::addSensorCol(QString _col)
{
int idx = findSensor(_col);
if (idx == -1)
{
sensor_report newSensor;
newSensor.name = _col;
newSensor.present = true;
newSensor.value = 0.0;
list_sensors.append(newSensor);
return true;
}
else
{
return false;
}
}
//add value for sensor
bool XlruReportClass::addValueCol(QString _col, double value)
{
int idx = findSensor(_col);
if (idx != -1)
{
list_sensors[idx].value = value;
list_sensors[idx].present = true;
return true;
}
else
{
return false;
}
}
bool XlruReportClass::saveValue()
{
bool save = false;
if ((!file.isOpen()) && (!header_saved))
saveHeader();
QString string_to_save = QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss");
for (int i = 0; i< list_sensors.count(); i++)
{
if (list_sensors[i].present)
{
save = true;
string_to_save = string_to_save + ";" + QString::number(list_sensors[i].value, 'f', 2);
}
}
if (save)
{
string_to_save = string_to_save+";";
//reset value
foreach (sensor_report se, list_sensors)
{
se.value = 0.0;
}
return saveString(string_to_save);
}
return -1;
}
bool XlruReportClass::saveHeader()
{
bool save = false;
QString string_to_save = "DateTime";
for (int i = 0; i< list_sensors.count(); i++)
{
if (list_sensors[i].present)
{
save = true;
string_to_save = string_to_save + ";" + list_sensors[i].name;
}
}
if (save)
{
string_to_save = string_to_save+";";
header_saved = true;
return saveString(string_to_save);
}
return -1;
}
bool XlruReportClass::closeFile()
{
if (file.isOpen())
{
file.close();
return true;
}
return false;
}
int XlruReportClass::findSensor(QString _col)
{
for (int i = 0; i<list_sensors.count(); i++)
{
if (list_sensors[i].name==_col)
return i;
}
return -1;
}