hlp:640x480-小屏vx4齿轮泵代码提交

This commit is contained in:
kite_lucs
2026-09-10 15:19:23 +08:00
commit b1ff3223e9
1534 changed files with 237996 additions and 0 deletions
+458
View File
@@ -0,0 +1,458 @@
#include "print_net.h"
#include "QDebug"
#include <QtNetwork/QSslConfiguration>
#include <QtNetwork/QNetworkRequest>
#include "LogInfo.h"
#define QT_NO_SSL
PrintNet::PrintNet()
{
m_bShortNet = false;
// 创建网络管理器用于GET method
this->getManager = new QNetworkAccessManager(this);
connect(getManager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));
// 创建网络管理器用于POST method
this->postManager = new QNetworkAccessManager(this);
connect(postManager, SIGNAL(finished(QNetworkReply *)), this, SLOT(postPrintFinished(QNetworkReply *)));
m_postmanager = new QNetworkAccessManager(this);
connect(m_postmanager, SIGNAL(finished(QNetworkReply *)), this, SLOT(postGetShortUrlFinished(QNetworkReply *)));
}
PrintNet::~PrintNet()
{
delete this->getManager;
delete this->postManager;
}
// 初步实现 喷码机向服务器获取打印数据 以及 上报状态 接口
// 未处理 网络条件不具备 / 访问超时 等异常
// 递归列出JSON所有层内容
void PrintNet::traversJson(QJsonObject json_obj)
{
foreach (const QString& key, json_obj.keys())
{
QJsonValue value = json_obj.value(key);
if (!value.isObject())
{
// qDebug()<<"[traversJson]key="<<key<<" value="<<value;
if(key == "QRCodeContent"){
QString t_str;
t_str = value.toString();
// const char *std_str = t_str.toStdString().data();
// strcpy(Json_get_data.QRCodeContent,std_str);
strncpy(Json_get_data.QRCodeContent,t_str.toStdString().c_str(),sizeof(Json_get_data.QRCodeContent));
Json_get_data.QRCodeContent[sizeof(Json_get_data.QRCodeContent) -1] = '\0';
LogInfo::setRunStatusText(tr("获取二维码内容:"));
LogInfo::setRunStatusText(QString(t_str.toStdString().c_str()));
}else
if(key == "PrintingContent"){
QString t_str;
t_str = value.toString();
t_str.replace('&',"&amp;").replace('<',"&lt;").replace('>',"&gt;").replace('"',"&quot;").replace('\'',"&#39;")
.replace('¥',"&yen;").replace('®',"&reg;").replace('°',"&deg;").replace('±',"&plusmn;").replace('×',"x")
.replace('*',"&#42;").replace('÷',"&divide;").replace('²',"&sup2;").replace('³',"&sup3;").replace('Ω',"&Omega;")
.replace('Φ',"&Phi;").replace('¥',"&yen;").replace('φ',"&phi;").replace('©',"&copy;").replace('@',"&#64;")
.replace('㎡',"&#13217;").replace('℃',"&#8451;").replace('℉',"&#8457;").replace('\r',' ').replace('\n',' ') ;
// const char *std_str = t_str.toStdString().data();
// strcpy(Json_get_data.PrintingContent,std_str);
strncpy(Json_get_data.PrintingContent,t_str.toStdString().c_str(),sizeof(Json_get_data.PrintingContent));
Json_get_data.PrintingContent[sizeof(Json_get_data.PrintingContent) -1] = '\0';
}else
if(key == "ProductPlanQty"){
Json_get_data.ProductPlanQty = value.toDouble();
}else
if(key == "ProductUniqueCode"){
QString t_str;
t_str = value.toString();
// const char *std_str = t_str.toStdString().data();
// strcpy(Json_get_data.ProductUniqueCode,std_str);
strncpy(Json_get_data.ProductUniqueCode,t_str.toStdString().c_str(),sizeof(Json_get_data.ProductUniqueCode));
Json_get_data.ProductUniqueCode[sizeof(Json_get_data.ProductUniqueCode) -1] = '\0';
LogInfo::setRunStatusText(tr("获取数字码:"));
LogInfo::setRunStatusText(QString(t_str.toStdString().c_str()));
}else
if(key == "ProductionTask"){
Json_get_data.ProductionTask = value.toDouble();
}else
if(key == "StartMetre"){
Json_get_data.StartMetre = value.toDouble();
}else
if(key == "TasdNeedConfirm"){
Json_get_data.TasdNeedConfirm = value.toBool();
}else
if(key == "TaskSwitchingMode"){
Json_get_data.TaskSwitchingMode = value.toDouble();
}
}
else
{
traversJson(value.toObject());
}
}
}
void PrintNet::postPrintFinished(QNetworkReply *reply)
{
QNetworkReply::NetworkError error;
error = reply->error(); // 应答无错误时为QNetworkReply::NoError(0)
if (error)
{ // 非0值表示有错误发生
switch(error)
{
case QNetworkReply::ConnectionRefusedError:
save_messege = "远程主机拒绝连接";
break;
case QNetworkReply::RemoteHostClosedError:
save_messege = "远程主机关闭连接";
break;
case QNetworkReply::HostNotFoundError:
save_messege = "远程主机未找到";
break;
case QNetworkReply::TimeoutError:
save_messege = "连接到远程主机超时";
break;
case QNetworkReply::ContentAccessDenied:
save_messege = "远程主机拒绝访问";
break;
case QNetworkReply::ContentNotFoundError:
save_messege = "内容未找到";
break;
default:
save_messege = "通信失败";
}
emit json_server_error();
return;
}
//未出错时获取响应信息
QByteArray rsp_data = reply->readAll();
//以下对获取的JSON数据进行解析
QJsonDocument json = QJsonDocument::fromJson(rsp_data);
QJsonObject obj = json.object();
traversJson(obj); // 递归列出JSON所有层内容
// qDebug() << "[postPrintFinished]ResultCode: " << obj["ResultCode"];
// qDebug() << "[postPrintFinished]ResultMessage: " << obj["ResultMessage"];
// qDebug() << "[postPrintFinished]ResultData: " << obj["ResultData"];
save_messege = obj["ResultMessage"].toString();
reply->deleteLater();
}
QString PrintNet::getMessege()
{
return save_messege;
}
// 处理HTTP请求的应答
void PrintNet::replyFinished(QNetworkReply *reply)
{
QNetworkReply::NetworkError error;
error = reply->error(); // 应答无错误时为QNetworkReply::NoError(0)
if (error)
{ // 非0值表示有错误发生
switch(error)
{
case QNetworkReply::ConnectionRefusedError:
save_messege = "远程主机拒绝连接";
break;
case QNetworkReply::RemoteHostClosedError:
save_messege = "远程主机关闭连接";
break;
case QNetworkReply::HostNotFoundError:
save_messege = "远程主机未找到";
break;
case QNetworkReply::TimeoutError:
save_messege = "连接到远程主机超时";
break;
case QNetworkReply::ContentAccessDenied:
save_messege = "远程主机拒绝访问";
break;
case QNetworkReply::ContentNotFoundError:
save_messege = "内容未找到";
break;
default:
save_messege = "通信失败";
}
emit json_server_error();
return;
}
//未出错时获取响应信息
QByteArray rsp_data = reply->readAll();
//以下对获取的JSON数据进行解析
QJsonDocument json = QJsonDocument::fromJson(rsp_data);
QJsonObject obj = json.object();
traversJson(obj); // 递归列出JSON所有层内容
// qDebug() << "[replyFinished] ResultCode: " << obj["ResultCode"];
// qDebug() << "[replyFinished] ResultMessage: " << obj["ResultMessage"];
// qDebug() << "[replyFinished] ResultData: " << obj["ResultData"];
save_messege = obj["ResultMessage"].toString();
reply->deleteLater();
save_messege = "JSON获取成功!";
emit showMessege();
if(m_bShortNet)
{
FromBaiDuGetShortUrl(Json_get_data.QRCodeContent);
}
else
{
emit receiveJSONDatafinish();
}
}
// 从服务器获取打印数据
// url - 提供打印数据的服务器链接
// equip_code - 喷码机编号
void PrintNet::PrintNetGetData(QString url, const QString& equip_code)
{
EquipmentCode = equip_code;
//设计本接口实现时,考虑输入的url为问号(?)之前那部分,不同的喷码机equip_code不同
//QUrl qrl("http://47.111.170.144:8754/KLAPS/APSServer/ECode/GetProductUniqueCodeTest?EquipmentCode=1");
QUrl qrl(url);
// 在访问服务器API的链接中添加喷码机编号
//qrl.addQueryItem("EquipmentCode", QString::number(equip_code));
qrl.addQueryItem("EquipmentCode", equip_code);
//QUrlQuery query;
//query.addQueryItem("EquipmentCode", QString::number(equip_code));
//qrl.setQuery(query);
// 构造请求
QNetworkRequest request;
request.setUrl(qrl);
getManager->get(request); // HTTP GET
}
// 向服务器上报打印完成状态
// url - 上报打印完成状态的服务器链接
void PrintNet::PrintNetPostFinish(QString url)
{
QUrl qrl(url);
// 构造JSON对象数据
QJsonObject json;
json.insert("ProductUniqueCode", QString(Json_get_data.ProductUniqueCode));
json.insert("ProductionTask", QString::number(Json_get_data.ProductionTask));
json.insert("PrintingContent", QString(Json_get_data.PrintingContent));
//json.insert("EquipmentUniqueCode", QString::number(EquipmentCode) );
json.insert("EquipmentUniqueCode", EquipmentCode );
json.insert("StartingMeters", QString::number(Json_get_data.StartMetre));
json.insert("ProductNumber", QString::number(Json_get_data.ProductPlanQty));
json.insert("Coordinates", QString("北纬N31°51′15.36 东经E117°12′8.77"));
// qDebug() << json;
QJsonDocument jsonDoc(json);
// qDebug() << jsonDoc;
QByteArray jsonData = jsonDoc.toJson();
// qDebug() << jsonData;
QNetworkRequest request;
request.setUrl(qrl);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
postManager->post(request, jsonData); // HTTP POST
}
// 向服务器上报设备运行状态
// url - 上报设备运行状态的服务器链接
void PrintNet::PrintNetPostState(QString url)
{
QUrl qrl(url);
// 构造JSON对象数据
QJsonObject json;
//json.insert("EquipmentUniqueCode", QString::number(EquipmentCode));
json.insert("EquipmentUniqueCode", EquipmentCode );
json.insert("CurrentMeter", QString("13.3"));
json.insert("CurrentEcode", QString(Json_get_data.ProductUniqueCode));
json.insert("CurrentPrintingContent", QString(Json_get_data.PrintingContent));
// qDebug() << json;
QJsonDocument jsonDoc(json);
// qDebug() << jsonDoc;
QByteArray jsonData = jsonDoc.toJson();
// qDebug() << jsonData;
QNetworkRequest request;
request.setUrl(qrl);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
postManager->post(request, jsonData); // HTTP POST
}
// 向百度云获取转换的短网址
//longUrl要转换的长url
void PrintNet::FromBaiDuGetShortUrl(QString longUrl)
{
QUrl qrl(QString("https://dwz.cn/api/v3/short-urls"));
// 构造JSON对象数据
QJsonObject json;
json.insert("LongUrl", longUrl);
json.insert("TermOfValidity", QString("long-term"));
//json.insert("CurrentEcode", QString(Json_get_data.ProductUniqueCode));
//json.insert("CurrentPrintingContent", QString(Json_get_data.PrintingContent));
//qDebug() << json;
QJsonArray Arrjson;
Arrjson.append(json);
QJsonDocument jsonDoc(Arrjson);
//qDebug() << jsonDoc;
QByteArray jsonData = jsonDoc.toJson();
//qDebug() << jsonData;
//LogInfo::setRunStatusText(tr("FromBaiDuGetShortUrl(): setSsl before"));
QNetworkRequest request;
request.setUrl(qrl);
//LogInfo::setRunStatusText(tr("defaultConfiguration new before"));
QSslConfiguration config = QSslConfiguration::defaultConfiguration();
//LogInfo::setRunStatusText(tr("defaultConfiguration 1"));
config.setProtocol(QSsl::TlsV1);
//LogInfo::setRunStatusText(tr("defaultConfiguration 2"));
config.setPeerVerifyMode(QSslSocket::VerifyNone);
//LogInfo::setRunStatusText(tr("defaultConfiguration 3"));
request.setSslConfiguration(config);
//LogInfo::setRunStatusText(tr("FromBaiDuGetShortUrl(): setSsl after"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json; charset=UTF-8");
request.setRawHeader("Dwz-Token" ,"708e8736a533df553a8898699280bcf9");
//LogInfo::setRunStatusText(tr("FromBaiDuGetShortUrl(): <1>"));
//QNetworkAccessManager *post_manager = new QNetworkAccessManager(this);
//connect(post_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(postGetShortUrlFinished(QNetworkReply *)));
m_postmanager->post(request, jsonData); // HTTP POST
//LogInfo::setRunStatusText(tr("FromBaiDuGetShortUrl(): <2>"));
//connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onNetReplyError(QNetworkReply::NetworkError)));
//connect(reply, SIGNAL(sslErrors(QList&)), this, SLOT(onNetReplySshErrors(QList&)));
#ifndef QT_NO_SSL
connect(post_manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
this, SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
#endif
}
#ifndef QT_NO_SSL
void PrintNet::sslErrors(QNetworkReply *reply,const QList<QSslError> &)
{
reply->ignoreSslErrors();
}
#endif
void PrintNet::postGetShortUrlFinished(QNetworkReply *reply)
{
//LogInfo::setRunStatusText(tr("postGetShortUrlFinished(): <3>"));
QNetworkReply::NetworkError error;
error = reply->error(); // 应答无错误时为QNetworkReply::NoError(0)
if (error)
{ // 非0值表示有错误发生
switch(error)
{
case QNetworkReply::ConnectionRefusedError:
save_messege = "远程主机拒绝连接";
break;
case QNetworkReply::RemoteHostClosedError:
save_messege = "远程主机关闭连接";
break;
case QNetworkReply::HostNotFoundError:
save_messege = "远程主机未找到";
break;
case QNetworkReply::TimeoutError:
save_messege = "连接到远程主机超时";
break;
case QNetworkReply::ContentAccessDenied:
save_messege = "远程主机拒绝访问";
break;
case QNetworkReply::ContentNotFoundError:
save_messege = "内容未找到";
break;
default:
save_messege = "通信失败";
}
//LogInfo::setRunStatusText(tr("postGetShortUrlFinished(): <4>"));
emit json_server_error();
//emit receiveJSONDatafinish();
return;
}
//未出错时获取响应信息
QByteArray rsp_data = reply->readAll();
//以下对获取的JSON数据进行解析
QJsonDocument json = QJsonDocument::fromJson(rsp_data);
//qDebug() << json;
QJsonObject obj = json.object();
// qDebug() << obj;
QString strResultCode;
save_messege = strResultCode.number(obj["Code"].toDouble());
if(save_messege != "0")
{
//LogInfo::setRunStatusText(tr("postGetShortUrlFinished(): <5>"));
//emit receiveJSONDatafinish();
save_messege = "获取短网址出错,错误码:"+ save_messege;
return;
}
QJsonArray JsonArr = obj["ShortUrls"].toArray();
QJsonValue value = JsonArr.at(0);
QJsonObject jsonObj = value.toObject();
#if 1
foreach (const QString& key, jsonObj.keys())
{
QJsonValue value = jsonObj.value(key);
if (!value.isObject())
{
// qDebug()<<"[traversJson]key="<<key<<" value="<<value;
if(key == "ShortUrl")
{
QString t_str;
t_str = value.toString();
const char *std_str = t_str.toStdString().data();
strcpy(Json_get_data.QRCodeContent,std_str);
}
}
}
#endif
save_messege = "获取短网址成功";
//LogInfo::setRunStatusText(tr("postGetShortUrlFinished(): <6>"));
reply->deleteLater();
emit receiveJSONDatafinish();
}
void PrintNet::getJson_data(JSON_DATA *json_data)
{
memcpy(json_data, &Json_get_data, sizeof(JSON_DATA));
}