##// END OF EJS Templates
lfrsgse is a QMainWindow...
lfrsgse is a QMainWindow Reorganize HK information display

File last commit:

r27:237de88e9fa6 default
r39:f8ba3aa4aa6e default
Show More
lfrxmlparser.cpp
65 lines | 1.7 KiB | text/x-c | CppLexer
#include "lfrxmlparser.h"
LFRXmlParser::LFRXmlParser(QObject *parent) :
QObject(parent)
{
}
void LFRXmlParser::processIncomingStr(QString incomingStr)
{
int indexOfStartStr;
int indexOfStopStr;
int result;
QString eventBinaryStr;
QString startStr = "<EventBinary>";
QString stopStr = "</EventBinary>";
xmlBuffer.append(incomingStr);
result = findPattern( startStr, stopStr, &indexOfStartStr, &indexOfStopStr);
while( result !=-1 )
{
eventBinaryStr = xmlBuffer.mid(
indexOfStartStr + startStr.size(),
indexOfStopStr - (indexOfStartStr + startStr.size() ) );
processIncomingData( eventBinaryStr );
xmlBuffer.remove(0, indexOfStopStr + stopStr.size());
result = findPattern( startStr, stopStr, &indexOfStartStr, &indexOfStopStr);
}
emit processPacketStore();
}
int LFRXmlParser::findPattern(QString startStr, QString stopStr, int *indexOfStartStr, int *indexOfStopStr)
{
*indexOfStartStr = xmlBuffer.indexOf(startStr);
*indexOfStopStr = xmlBuffer.indexOf(stopStr);
if ( (*indexOfStartStr==-1) | (*indexOfStopStr==-1) | (*indexOfStartStr > *indexOfStopStr) )
{
return -1;
}
else
{
return 0;
}
}
void LFRXmlParser::processIncomingData(const QString &ch)
{
QByteArray newdat;
char *values;
unsigned char *ccsdsData;
unsigned int ccsdsSize = 0;
TMPacketToRead *incomingPacket;
newdat = QByteArray::fromHex(ch.toAscii());
values = (char*) newdat.data();
ccsdsSize = newdat.size();
ccsdsData = (unsigned char *) values;
incomingPacket = new TMPacketToRead(ccsdsData, ccsdsSize);
generalCCSDSPacketStore->append(incomingPacket);
}