Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 278 → Rev 279

/QMK-Groundstation/tags/V0.7.3/Logger/CSVLogger.cpp
0,0 → 1,109
/***************************************************************************
* Copyright (C) 2008 by Manuel Schrape *
* manuel.schrape@gmx.de *
* and Andreas Bresser bresser@informatik.uni-bremen.de *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
 
#include "CSVLogger.h"
 
CSVLogger::CSVLogger(cSettings * settings, sMode * mode)
{
// QFile-Instanz (Log-Datei)
csvfile = new QFile("");
this->settings = settings;
this->mode = mode;
}
 
CSVLogger::~CSVLogger()
{
close();
}
 
//datei ist geöffnet bedeutet wir sind soweit und können schreiben
bool CSVLogger::ready()
{
return csvfile->isOpen();
}
 
//Datei schließen
void CSVLogger::close()
{
if (csvfile->isOpen())
csvfile->close();
}
 
//neuen Log erstellen
void CSVLogger::newLog()
{
if (!csvfile->isOpen())
{
QString mode_name = mode->Hardware;
 
if (mode_name.size() == 0)
{
mode_name = QString("groundstation_log");
}
 
QString filename = settings->DIR.Logging + mode_name + "_" +
QDate::currentDate().toString(("yyyy-MM-dd")) + "_" +
QTime::currentTime().toString("hh-mm") + ".csv";
 
csvfile = new QFile(filename);
 
if (!csvfile->exists())
{
csvfile->open(QIODevice::Append | QIODevice::Text);
 
QTextStream Out(csvfile);
 
for (int a = 0; a < MaxAnalog; a++)
{
if (settings->Analog1.LogView[a])
{
Out << settings->Analog1.Label[a];
 
if (a < MaxAnalog - 1)
Out << ';';
}
}
Out << "\n";
}
else
{
csvfile->open(QIODevice::Append | QIODevice::Text);
}
}
}
 
//daten schreiben
void CSVLogger::write(int * analogData)
{
if (csvfile->isOpen())
{
QTextStream out(csvfile);
for (int a=0; a<MaxAnalog; a++)
{
if (settings->Analog1.LogView[a])
{
out << analogData[a];
if (a < MaxAnalog - 1)
out << ';';
}
}
out << "\n";
}
}