cimforreduceloss/core/transformerparser.cpp

232 lines
7.8 KiB
C++

#include "transformerparser.h"
//QHash<QString,TransformerParser::ThreePhrasePower> *TransformerParser::mTransHash=NULL;
//#include <QMessageBox>
QSharedPointer<QHash<QString,TransformerParser::ThreePhrasePower> > TransformerParser::msharedPoint=QSharedPointer<QHash<QString,TransformerParser::ThreePhrasePower> >();
QSharedPointer<QHash<QString,TransformerParser::TransRX> > TransformerParser::mTransRXsharedPoint=QSharedPointer<QHash<QString,TransformerParser::TransRX> >();
TransformerParser::TransformerParser(QObject *parent) :
QObject(parent)
{
}
double TransformerParser::GetTransformerAPower(const QString &file,const QString &id)
{
if(TransformerParser::msharedPoint.isNull())
{
TransformerParser::msharedPoint=QSharedPointer<QHash<QString,ThreePhrasePower> >(new QHash<QString,ThreePhrasePower>);
TransformerParser::ReadData(file);
}
QHash<QString,TransformerParser::ThreePhrasePower> *pHash=TransformerParser::msharedPoint.data();//仅仅为了后面使用方便。
if(pHash->contains("id"))
{
qDebug()<<"found\n";
}
return (*pHash)[id.trimmed()].A;
}
double TransformerParser::GetTransformerBPower(const QString &file,const QString &id)
{
if(TransformerParser::msharedPoint.isNull())
{
TransformerParser::msharedPoint=QSharedPointer<QHash<QString,ThreePhrasePower> >(new QHash<QString,ThreePhrasePower>);
TransformerParser::ReadData(file);
}
QHash<QString,TransformerParser::ThreePhrasePower> *pHash=TransformerParser::msharedPoint.data();//仅仅为了后面使用方便。
return (*pHash)[id.trimmed()].B;
}
double TransformerParser::GetTransformerCPower(const QString &file,const QString &id)
{
if(TransformerParser::msharedPoint.isNull())
{
TransformerParser::msharedPoint=QSharedPointer<QHash<QString,ThreePhrasePower> >(new QHash<QString,ThreePhrasePower>);
TransformerParser::ReadData(file);
}
QHash<QString,TransformerParser::ThreePhrasePower> *pHash=TransformerParser::msharedPoint.data();//仅仅为了后面使用方便。
return (*pHash)[id.trimmed()].C;
}
bool TransformerParser::ReadData(const QString &file)
{
if(!QFile::exists(file))
{
// QMessageBox::warning(0,"警告","变压器参数文件不存在!");
return false;
}
QFile _file(file);
if(_file.open(QIODevice::ReadOnly))
{
QString line;
QStringList sep;
QTextStream stream(&_file);
// stream.readLine();//跳过第一行
// stream.readLine();//跳过第二行
while(!stream.atEnd())
{
line=stream.readLine();
sep=line.split(',');
ThreePhrasePower power;
bool ok;
power.A=sep.at(14).toDouble(&ok);
if(!ok)
{
continue;
}
power.B=sep.at(15).toDouble(&ok);
if(!ok)
{
continue;
}
power.C=sep.at(16).toDouble(&ok);
if(!ok)
{
continue;
}
power.RA=sep.at(18).toDouble(&ok);
if(!ok)
{
continue;
}
power.RB=sep.at(19).toDouble(&ok);
if(!ok)
{
continue;
}
power.RC=sep.at(20).toDouble(&ok);
if(!ok)
{
continue;
}
QHash<QString,TransformerParser::ThreePhrasePower> *pHash=TransformerParser::msharedPoint.data();//仅仅为了后面使用方便。
pHash->insert(sep.at(1).trimmed(),power);
}
_file.close();
return true;
}
return false;
}
bool TransformerParser::ReadRXData(const QString &file)
{
if(!QFile::exists(file))
{
//QMessageBox::warning(0,"警告","变压器功率文件不存在!");
return false;
}
QFile _file(file);
if(_file.open(QIODevice::ReadOnly))
{
QString line;
QStringList sep;
QTextStream stream(&_file);
while(!stream.atEnd())
{
line=stream.readLine();
sep=line.split(',');
TransRX x;
x.Pk=sep.at(2).toDouble();
x.Uk=sep.at(4).toDouble();
x.P0=sep.at(1).toDouble();
x.I0=sep.at(3).toDouble();
if(x.Uk==0)
{
x.Uk=4;
}
QHash<QString,TransformerParser::TransRX> *pHash=TransformerParser::mTransRXsharedPoint.data();//仅仅为了后面使用方便。
pHash->insert(sep.at(0).trimmed(),x);
}
_file.close();
return true;
}
return false;
}
double TransformerParser::GetDisTransformerPk(const QString &file, const QString &id)
{
if(TransformerParser::mTransRXsharedPoint.isNull())
{
TransformerParser::mTransRXsharedPoint=QSharedPointer<QHash<QString,TransRX> >(new QHash<QString,TransRX>);
TransformerParser::ReadRXData(file);
}
QHash<QString,TransformerParser::TransRX> *pHash=TransformerParser::mTransRXsharedPoint.data();//仅仅为了后面使用方便。
return (*pHash)[id.trimmed()].Pk;
}
double TransformerParser::GetDisTransformerUk(const QString &file, const QString &id)
{
if(TransformerParser::mTransRXsharedPoint.isNull())
{
TransformerParser::mTransRXsharedPoint=QSharedPointer<QHash<QString,TransRX> >(new QHash<QString,TransRX>);
TransformerParser::ReadRXData(file);
}
QHash<QString,TransformerParser::TransRX> *pHash=TransformerParser::mTransRXsharedPoint.data();//仅仅为了后面使用方便。
return (*pHash)[id.trimmed()].Uk;
}
double TransformerParser::GetTransformerAReactivePower(const QString &file, const QString &id)
{
if(TransformerParser::msharedPoint.isNull())
{
TransformerParser::msharedPoint=QSharedPointer<QHash<QString,ThreePhrasePower> >(new QHash<QString,ThreePhrasePower>);
TransformerParser::ReadData(file);
}
QHash<QString,TransformerParser::ThreePhrasePower> *pHash=TransformerParser::msharedPoint.data();//仅仅为了后面使用方便。
return (*pHash)[id.trimmed()].RA;
}
double TransformerParser::GetTransformerBReactivePower(const QString &file, const QString &id)
{
if(TransformerParser::msharedPoint.isNull())
{
TransformerParser::msharedPoint=QSharedPointer<QHash<QString,ThreePhrasePower> >(new QHash<QString,ThreePhrasePower>);
TransformerParser::ReadData(file);
}
QHash<QString,TransformerParser::ThreePhrasePower> *pHash=TransformerParser::msharedPoint.data();//仅仅为了后面使用方便。
return (*pHash)[id.trimmed()].RB;
}
double TransformerParser::GetTransformerCReactivePower(const QString &file, const QString &id)
{
if(TransformerParser::msharedPoint.isNull())
{
TransformerParser::msharedPoint=QSharedPointer<QHash<QString,ThreePhrasePower> >(new QHash<QString,ThreePhrasePower>);
TransformerParser::ReadData(file);
}
QHash<QString,TransformerParser::ThreePhrasePower> *pHash=TransformerParser::msharedPoint.data();//仅仅为了后面使用方便。
return (*pHash)[id.trimmed()].RC;
}
double TransformerParser::GetDisTransformerP0(const QString &file, const QString &id)
{
if(TransformerParser::mTransRXsharedPoint.isNull())
{
TransformerParser::mTransRXsharedPoint=QSharedPointer<QHash<QString,TransRX> >(new QHash<QString,TransRX>);
TransformerParser::ReadRXData(file);
}
QHash<QString,TransformerParser::TransRX> *pHash=TransformerParser::mTransRXsharedPoint.data();//仅仅为了后面使用方便。
return (*pHash)[id.trimmed()].P0;
}
double TransformerParser::GetDisTransformerI0(const QString &file, const QString &id)
{
if(TransformerParser::mTransRXsharedPoint.isNull())
{
TransformerParser::mTransRXsharedPoint=QSharedPointer<QHash<QString,TransRX> >(new QHash<QString,TransRX>);
TransformerParser::ReadRXData(file);
}
QHash<QString,TransformerParser::TransRX> *pHash=TransformerParser::mTransRXsharedPoint.data();//仅仅为了后面使用方便。
return (*pHash)[id.trimmed()].I0;
}