#include "check_obj.h"
|
#include "unistd.h"
|
#include <QDebug>
|
|
Check_Obj::Check_Obj()
|
{
|
|
}
|
|
bool Check_Obj::MTest_Data(CHECK_DATA workingdata, bool W)
|
{
|
QFile file(workdata);
|
if(!file.open(QIODevice::WriteOnly))
|
return false;
|
|
QDomDocument doc;
|
QDomProcessingInstruction instruction;
|
instruction = doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");
|
doc.appendChild(instruction);
|
QDomElement root=doc.createElement("WORK_DATA_ROOT");
|
doc.appendChild(root);
|
|
QDomElement DE = doc.createElement("testfilename");
|
DE.appendChild(doc.createTextNode(workingdata.testfilename));
|
root.appendChild(DE);
|
|
DE = doc.createElement("workstate");
|
DE.appendChild(doc.createTextNode(QString::number(workingdata.workstate)));
|
root.appendChild(DE);
|
|
DE = doc.createElement("alarmstate");
|
DE.appendChild(doc.createTextNode(QString::number(workingdata.alarmstate)));
|
root.appendChild(DE);
|
|
DE = doc.createElement("PowerCtrl");
|
DE.appendChild(doc.createTextNode(QString::number(workingdata.PowerCtrl)));
|
root.appendChild(DE);
|
|
DE = doc.createElement("CapPS");
|
DE.appendChild(doc.createTextNode(QString::number(workingdata.CapPS)));
|
root.appendChild(DE);
|
|
DE = doc.createElement("SubCapPS1");
|
DE.appendChild(doc.createTextNode(QString::number(workingdata.SubCapPS[0])));
|
root.appendChild(DE);
|
|
DE = doc.createElement("SubCapPS2");
|
DE.appendChild(doc.createTextNode(QString::number(workingdata.SubCapPS[1])));
|
root.appendChild(DE);
|
|
DE = doc.createElement("SubCapPS3");
|
DE.appendChild(doc.createTextNode(QString::number(workingdata.SubCapPS[2])));
|
root.appendChild(DE);
|
|
DE = doc.createElement("SubCapPS4");
|
DE.appendChild(doc.createTextNode(QString::number(workingdata.SubCapPS[3])));
|
root.appendChild(DE);
|
|
QTextStream out( &file );
|
doc.save(out, 4);
|
|
if(W)
|
{
|
file.flush();
|
int fd = file.handle();
|
fsync(fd);
|
}
|
file.close();
|
return true;
|
}
|
|
bool Check_Obj::RTest_Data(CHECK_DATA &workingdata)
|
{
|
QDomDocument doc;
|
QFile file(workdata);
|
if( !file.exists())
|
return false;
|
if( !file.open( QFile::ReadOnly))
|
return false;
|
if(!doc.setContent(&file))
|
return false;
|
file.close();
|
QDomElement root = doc.documentElement();
|
QDomNode DN;
|
|
if(!(DN=root.elementsByTagName("testfilename").at(0)).isNull())
|
{
|
workingdata.testfilename = DN.toElement().text();
|
}
|
if(!(DN=root.elementsByTagName("workstate").at(0)).isNull())
|
{
|
workingdata.workstate = DN.toElement().text().toInt();
|
}
|
if(!(DN=root.elementsByTagName("alarmstate").at(0)).isNull())
|
{
|
workingdata.alarmstate = DN.toElement().text().toInt();
|
}
|
if(!(DN=root.elementsByTagName("PowerCtrl").at(0)).isNull())
|
{
|
workingdata.PowerCtrl = DN.toElement().text().toInt();
|
}
|
if(!(DN=root.elementsByTagName("CapPS").at(0)).isNull())
|
{
|
workingdata.CapPS = DN.toElement().text().toInt();
|
}
|
if(!(DN=root.elementsByTagName("SubCapPS1").at(0)).isNull())
|
{
|
workingdata.SubCapPS[0] = DN.toElement().text().toInt();
|
}
|
if(!(DN=root.elementsByTagName("SubCapPS2").at(0)).isNull())
|
{
|
workingdata.SubCapPS[1] = DN.toElement().text().toInt();
|
}
|
if(!(DN=root.elementsByTagName("SubCapPS3").at(0)).isNull())
|
{
|
workingdata.SubCapPS[2] = DN.toElement().text().toInt();
|
}
|
if(!(DN=root.elementsByTagName("SubCapPS4").at(0)).isNull())
|
{
|
workingdata.SubCapPS[3] = DN.toElement().text().toInt();
|
}
|
return true;
|
}
|
|
bool Check_Obj::Read_Fbo_Data(QString fname, FBO_DATA &fbo_data){
|
QFile file(fname);
|
if( !file.open(QFile::ReadOnly) )
|
return false;
|
QDataStream dataStream(&file);
|
qint64 length = file.size();
|
quint8 *datas = new quint8[length];
|
memset(datas,0,length*sizeof(quint8));
|
dataStream.readRawData((char*)datas,length);
|
|
FBO_DATA_HEAD_START data_start;
|
memcpy(&data_start,datas,sizeof(FBO_DATA_HEAD_START));
|
int fbo_length = data_start.BattGroup;
|
fbo_length *= data_start.BattSum;
|
fbo_length = sizeof(FBO_DATA)-MONOMER_NUM_MAX*2+fbo_length*2;
|
|
qint64 addr = length-fbo_length;
|
|
while(addr>=FBO_DATA_HEAD_INFO_LENTH)
|
{
|
if( (datas[addr] == 0xFD || datas[addr] == 0xFC) &&
|
datas[addr] == datas[addr+1] &&
|
datas[addr] == datas[addr+2] &&
|
datas[addr] == datas[addr+3] )
|
{
|
memcpy(&fbo_data,&datas[addr],fbo_length);
|
delete []datas;
|
return true;
|
}
|
else
|
{
|
addr -=1;
|
}
|
}
|
delete []datas;
|
file.close();
|
return false;
|
}
|