#include "cimparserbatch.h" #include "derivedqthread.h" #include int callmain(char *arg); CIMParserBatch::CIMParserBatch() { } void CIMParserBatch::parser(const QString& dir, const QString &scadaDataFilePath) { QDir qdir(dir); QStringList filter; filter<<"*"; this->mdirList=qdir.entryInfoList(filter,QDir::NoDotAndDotDot | QDir::AllDirs); this->mite=this->mdirList.constBegin();//后面会用到,就是dir文件下的所有文件 this->ReadscadaData(scadaDataFilePath); //this->ExecuteParserApp(NULL); //this->GenerateBatchFile("c:/parser.bat"); this->CallFunParser(); } QString CIMParserBatch::FindXML(const QString& dir) { QDir qdir(dir); QStringList filter; filter<<"*.xml"; QFileInfoList xmlList; xmlList=qdir.entryInfoList(filter); if(xmlList.size()>1) { std::cout<deleteLater(); //先把上一次解析得到的文件拷回去 QFileInfoList fileList=this->FindiPsoPrefixedFile("c:/parser"); QFileInfo info; info=*(this->mite);//原始文件的路径 if(fileList.size()<6) { std::cout<mScada.contains(lineName)) { QTextStream stream(&pqi); FeederData feederData=this->mScada[lineName]; stream<mite++; } if(this->mite==this->mdirList.constEnd()) { std::cout<<"job finished."<mite); dir=fileInfo.absoluteFilePath(); xmlFile=this->FindXML(dir); if(xmlFile=="") { return; } QFile::remove("c:/parser/parser.xml"); QFile::copy(xmlFile,"c:/parser/parser.xml"); std::cout<<"prepare to parse "<connect(_thread,SIGNAL(finishedptr(QThread*)),this,SLOT(ExecuteParserApp(QThread*))); _thread->start(); } QFileInfoList CIMParserBatch::FindiPsoPrefixedFile(const QString& dir) { QDir qdir(dir); QStringList filter; filter<<"iPso_*"; return qdir.entryInfoList(filter);//如果找不到iPso开头的文件,返回的QFileInfoList长度为0。 } void CIMParserBatch::ReadscadaData(const QString& dataPath) { QString line; QStringList sep; QFile file(dataPath); if(file.open(QIODevice::ReadOnly)) { QTextStream stream(&file); while(!stream.atEnd()) { line=stream.readLine(); line=line.simplified(); line.trimmed(); sep=line.split(' '); if(sep.size()<3) { std::cout<<"scada file format error!"<exit(); } FeederData feederData; feederData.p=sep.at(1).toDouble(); feederData.q=sep.at(2).toDouble(); this->mScada.insert(sep.at(0),feederData); } file.close(); } else { std::cout<<"scada File not open. This file may not exist."<mite!=this->mdirList.constEnd()) { info=*(this->mite); fullFilePath=info.absoluteFilePath(); xmlFile=this->FindXML(fullFilePath); //stream<<"call "; stream<<"E:/lineloss/console/readxml1.exe "; stream<mite++; } bat.close(); } std::cout<<"job finished."<mite!=this->mdirList.constEnd()) { QString xmlFile; QString dir;//有xml文件的dir QFileInfo fileInfo=*(this->mite); dir=fileInfo.absoluteFilePath(); xmlFile=this->FindXML(dir); if(xmlFile=="") { return; } //QFile::remove("c:/parser/parser.xml"); //QFile::copy(xmlFile,"c:/parser/parser.xml"); std::cout<<"prepare to parse "<(xmlFile.toStdString().c_str())); //先把上一次解析得到的文件拷回去 //QFileInfoList fileList=this->FindiPsoPrefixedFile("c:/parser"); QFileInfo info(xmlFile); // info=*(this->mite);//原始文件的路径 // if(fileList.size()<6) // { // std::cout<mScada.contains(lineName)) { QTextStream stream(&pqi); FeederData feederData=this->mScada[lineName]; stream<mite++; } std::cout<<"job finished."<