You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
296 lines
5.9 KiB
C++
296 lines
5.9 KiB
C++
|
1 year ago
|
#include "jsonanalystr.h"
|
||
|
|
|
||
|
|
#include <QJsonDocument>
|
||
|
|
#include <QJsonArray>
|
||
|
|
#include <QJsonParseError>
|
||
|
|
#include <QVariant>
|
||
|
|
#include <QJsonValue>
|
||
|
|
|
||
|
|
#include <QString>
|
||
|
|
#include "WriteLog.h"
|
||
|
|
|
||
|
|
JsonAnalyStr::JsonAnalyStr()
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
int JsonAnalyStr::InitStr()
|
||
|
|
{
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
int JsonAnalyStr::GetPrinterPara(QList<myprinterPara> &list,char * buf,int iMaxLine)
|
||
|
|
{
|
||
|
|
QString qstr;
|
||
|
|
QJsonParseError jsonerror;
|
||
|
|
QJsonDocument jsondoc;
|
||
|
|
QJsonArray jsonArray;
|
||
|
|
QByteArray tmparray;
|
||
|
|
bool bRet;
|
||
|
|
int iRet;
|
||
|
|
|
||
|
|
|
||
|
|
qstr = QString::fromLocal8Bit(buf);
|
||
|
|
tmparray = qstr.toUtf8();
|
||
|
|
// WRITE_LOG(tmparray.data());
|
||
|
|
jsondoc = QJsonDocument::fromJson(tmparray, &jsonerror);
|
||
|
|
if ((jsondoc.isNull()) || (jsonerror.error != QJsonParseError::NoError))
|
||
|
|
{
|
||
|
|
return -3;
|
||
|
|
}
|
||
|
|
|
||
|
|
bRet = jsondoc.isArray();
|
||
|
|
if(! bRet)
|
||
|
|
{
|
||
|
|
return -4;
|
||
|
|
}
|
||
|
|
|
||
|
|
jsonArray = jsondoc.array();
|
||
|
|
for(int i=0; i<jsonArray.size(); i++)
|
||
|
|
{
|
||
|
|
myprinterPara para;
|
||
|
|
QJsonValue iconArray = jsonArray.at(i);
|
||
|
|
if(! iconArray.isObject())
|
||
|
|
{
|
||
|
|
return -5;
|
||
|
|
}
|
||
|
|
QJsonObject icon = iconArray.toObject();
|
||
|
|
|
||
|
|
if(! icon.contains(QStringLiteral(PRINTERNANE)))
|
||
|
|
{
|
||
|
|
return -6;
|
||
|
|
}
|
||
|
|
if(! icon.contains(QStringLiteral(PRINTERCOL)))
|
||
|
|
{
|
||
|
|
return -7;
|
||
|
|
}
|
||
|
|
if(! icon.contains(QStringLiteral(PRINTERLINE)))
|
||
|
|
{
|
||
|
|
return -8;
|
||
|
|
}
|
||
|
|
|
||
|
|
InitPrinterPara(¶);
|
||
|
|
|
||
|
|
iRet = GetPara(¶,icon);
|
||
|
|
if(iRet <0)
|
||
|
|
{
|
||
|
|
return -9;
|
||
|
|
}
|
||
|
|
|
||
|
|
if(para.line > (iMaxLine-2))
|
||
|
|
{
|
||
|
|
return -10;
|
||
|
|
}
|
||
|
|
list.append(para);
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
//
|
||
|
|
int JsonAnalyStr::GetPara(myprinterPara * pPara,QJsonObject & jobj)
|
||
|
|
{
|
||
|
|
QJsonValue jsValue;
|
||
|
|
QString qstr;
|
||
|
|
int iRet;
|
||
|
|
|
||
|
|
jsValue = jobj.value(QStringLiteral(PRINTERNANE));
|
||
|
|
if(jsValue.isString())
|
||
|
|
{
|
||
|
|
qstr = jsValue.toString();
|
||
|
|
iRet = QStringToChar(pPara->Name,qstr,MAXNAME_LEN-1);
|
||
|
|
if(iRet <0)
|
||
|
|
{
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
return -2;
|
||
|
|
}
|
||
|
|
|
||
|
|
jsValue = jobj.value(QStringLiteral(PRINTERCOL));
|
||
|
|
if(jsValue.isDouble())
|
||
|
|
{
|
||
|
|
pPara->col = jsValue.toVariant().toInt();
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
return -3;
|
||
|
|
}
|
||
|
|
|
||
|
|
jsValue = jobj.value(QStringLiteral(PRINTERLINE));
|
||
|
|
if(jsValue.isDouble())
|
||
|
|
{
|
||
|
|
pPara->line = jsValue.toVariant().toInt();
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
return -3;
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
//
|
||
|
|
int JsonAnalyStr::GetCutPaperPara(myCutPaperPara * pPara, char * buf)
|
||
|
|
{
|
||
|
|
QString qstr;
|
||
|
|
QJsonParseError jsonerror;
|
||
|
|
QJsonDocument jsondoc;
|
||
|
|
//QJsonArray jsonArray;
|
||
|
|
QByteArray tmparray;
|
||
|
|
QJsonObject qobj;
|
||
|
|
QJsonValue jsValue;
|
||
|
|
|
||
|
|
bool bRet;
|
||
|
|
// int iRet;
|
||
|
|
|
||
|
|
qstr = QString::fromLocal8Bit(buf);
|
||
|
|
tmparray = qstr.toUtf8();
|
||
|
|
|
||
|
|
// WRITE_LOG(tmparray.data());
|
||
|
|
jsondoc = QJsonDocument::fromJson(tmparray, &jsonerror);
|
||
|
|
if ((jsondoc.isNull()) || (jsonerror.error != QJsonParseError::NoError))
|
||
|
|
{
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
|
||
|
|
bRet = jsondoc.isObject();
|
||
|
|
if(! bRet)
|
||
|
|
{
|
||
|
|
return -2;
|
||
|
|
}
|
||
|
|
|
||
|
|
qobj = jsondoc.object();
|
||
|
|
if(! qobj.contains(QStringLiteral(CUTPAPERPARA)))
|
||
|
|
{
|
||
|
|
return -3;
|
||
|
|
}
|
||
|
|
if(! qobj.contains(QStringLiteral(CMDLFPARA)))
|
||
|
|
{
|
||
|
|
return -4;
|
||
|
|
}
|
||
|
|
if(! qobj.contains(QStringLiteral(CUTCMDPARA)))
|
||
|
|
{
|
||
|
|
return -5;
|
||
|
|
}
|
||
|
|
|
||
|
|
jsValue = qobj.value(QStringLiteral(CUTPAPERPARA));
|
||
|
|
if(jsValue.isDouble())
|
||
|
|
{
|
||
|
|
pPara->iCutPaper = jsValue.toVariant().toInt();
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
return -6;
|
||
|
|
}
|
||
|
|
|
||
|
|
jsValue = qobj.value(QStringLiteral(CMDLFPARA));
|
||
|
|
if(jsValue.isDouble())
|
||
|
|
{
|
||
|
|
pPara->iCmdlf = jsValue.toVariant().toInt();
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
return -7;
|
||
|
|
}
|
||
|
|
|
||
|
|
jsValue = qobj.value(QStringLiteral(CUTCMDPARA));
|
||
|
|
if(jsValue.isDouble())
|
||
|
|
{
|
||
|
|
pPara->iCutcmd = jsValue.toVariant().toInt();
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
return -8;
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
int JsonAnalyStr::GetPrinterInfo(QList<myprinterInfo> & paralist,char * buf)
|
||
|
|
{
|
||
|
|
QString qstr;
|
||
|
|
QJsonParseError jsonerror;
|
||
|
|
QJsonDocument jsondoc;
|
||
|
|
QJsonArray jsonArray;
|
||
|
|
QByteArray tmparray;
|
||
|
|
bool bRet;
|
||
|
|
int iRet;
|
||
|
|
|
||
|
|
qstr = QString::fromLocal8Bit(buf);
|
||
|
|
tmparray = qstr.toUtf8();
|
||
|
|
WRITE_LOG(tmparray.data());
|
||
|
|
jsondoc = QJsonDocument::fromJson(tmparray, &jsonerror);
|
||
|
|
if ((jsondoc.isNull()) || (jsonerror.error != QJsonParseError::NoError))
|
||
|
|
{
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
|
||
|
|
bRet = jsondoc.isArray();
|
||
|
|
if(! bRet)
|
||
|
|
{
|
||
|
|
return -2;
|
||
|
|
}
|
||
|
|
|
||
|
|
jsonArray = jsondoc.array();
|
||
|
|
for(int i=0; i<jsonArray.size(); i++)
|
||
|
|
{
|
||
|
|
myprinterInfo Info;
|
||
|
|
|
||
|
|
InitPrinterInfo(&Info);
|
||
|
|
QJsonValue iconArray = jsonArray.at(i);
|
||
|
|
if(! iconArray.isObject())
|
||
|
|
{
|
||
|
|
return -3;
|
||
|
|
}
|
||
|
|
QJsonObject icon = iconArray.toObject();
|
||
|
|
|
||
|
|
if(! icon.contains(QStringLiteral(PRINTERNANE)))
|
||
|
|
{
|
||
|
|
return -4;
|
||
|
|
}
|
||
|
|
|
||
|
|
if(! icon.contains(QStringLiteral(PRINTERVALUE)))
|
||
|
|
{
|
||
|
|
return -5;
|
||
|
|
}
|
||
|
|
|
||
|
|
QJsonValue Value = icon.value(QStringLiteral(PRINTERNANE));
|
||
|
|
if(Value.isString())
|
||
|
|
{
|
||
|
|
QString porestr = Value.toString();
|
||
|
|
iRet = QStringToChar(Info.Name,porestr,MAXNAME_LEN-1);
|
||
|
|
if(iRet <0)
|
||
|
|
{
|
||
|
|
return -6;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
return -7;
|
||
|
|
}
|
||
|
|
|
||
|
|
Value = icon.value(QStringLiteral(PRINTERVALUE));
|
||
|
|
if(Value.isString())
|
||
|
|
{
|
||
|
|
QString porestr = Value.toString();
|
||
|
|
iRet = QStringToChar(Info.Value,porestr,MAXVALUE_LEN -1);
|
||
|
|
if(iRet <0)
|
||
|
|
{
|
||
|
|
return -8;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
return -9;
|
||
|
|
}
|
||
|
|
|
||
|
|
paralist.append(Info);
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|