1.重新组织了文件。
2.准备试试把所有元素都读入内存中。 Signed-off-by: facat@lab.com <facat@lab.com>
This commit is contained in:
231
core/transformerparser.cpp
Normal file
231
core/transformerparser.cpp
Normal file
@@ -0,0 +1,231 @@
|
||||
#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;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user