#include "transformerparser.h" //QHash *TransformerParser::mTransHash=NULL; //#include QSharedPointer > TransformerParser::msharedPoint=QSharedPointer >(); QSharedPointer > TransformerParser::mTransRXsharedPoint=QSharedPointer >(); TransformerParser::TransformerParser(QObject *parent) : QObject(parent) { } double TransformerParser::GetTransformerAPower(const QString &file,const QString &id) { if(TransformerParser::msharedPoint.isNull()) { TransformerParser::msharedPoint=QSharedPointer >(new QHash); TransformerParser::ReadData(file); } QHash *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 >(new QHash); TransformerParser::ReadData(file); } QHash *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 >(new QHash); TransformerParser::ReadData(file); } QHash *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 *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 *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 >(new QHash); TransformerParser::ReadRXData(file); } QHash *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 >(new QHash); TransformerParser::ReadRXData(file); } QHash *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 >(new QHash); TransformerParser::ReadData(file); } QHash *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 >(new QHash); TransformerParser::ReadData(file); } QHash *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 >(new QHash); TransformerParser::ReadData(file); } QHash *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 >(new QHash); TransformerParser::ReadRXData(file); } QHash *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 >(new QHash); TransformerParser::ReadRXData(file); } QHash *pHash=TransformerParser::mTransRXsharedPoint.data();//仅仅为了后面使用方便。 return (*pHash)[id.trimmed()].I0; }