232 lines
7.8 KiB
C++
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;
|
|||
|
|
|
|||
|
|
}
|