稳定备份 更新顶盖逻辑

This commit is contained in:
2025-08-31 16:51:18 +08:00
parent aae60af637
commit 22e6be7afb
162 changed files with 4420 additions and 145154 deletions
+37 -19
View File
@@ -61,9 +61,9 @@ bool rpc_finsTcp::readData(std::vector<cv::Mat>& vec_mat, QByteArray& data)
ptr = new JsonRpcClient("127.0.0.1", 9000);
read_JsonRpcClient[data] = ptr;
}
auto result = read_JsonRpcClient[data]->call("excuteCli", QJsonArray{ QString(data) }, "finstcp");
data = variantListToByteArray(result);
//data = ptr->finsReadCall("excuteCli", QString(data), "finstcp");
//auto result = read_JsonRpcClient[data]->call("excuteCli", QJsonArray{ QString(data) }, "finstcp");
//data = variantListToByteArray(result);
data = ptr->finsReadCall("excuteCli", QString(data), "finstcp");
return true;
}
bool ifRetryCMD = false;
@@ -317,24 +317,42 @@ QByteArray JsonRpcClient::finsReadCall(const QString& method, const QString& par
QByteArray responseData = socket_.readAll();
try {
if (responseData.contains("error")) {
//qWarning() << "[JsonRpcClient] Error:" << QString::fromStdString(respJson["error"].dump());
return QByteArray();
}
int startPos = responseData.indexOf(": [") + 3;
int length = responseData.indexOf("],") - startPos;
auto splitResult = responseData.mid(startPos, length);
QByteArray result;
for (int i = 0; i < splitResult.size(); i+=3) {
result.append(splitResult[i] -48);
}
return result;
}
catch (const nlohmann::json::parse_error& e) {
qWarning() << "[JsonRpcClient] Parse error:" << e.what();
// 仅用QByteArray查找和分割功能解析result数组
if (responseData.contains("error")) {
qWarning() << "[JsonRpcClient] Error in response:" << responseData;
return QByteArray();
}
// 查找 "result": [ 和对应的 ]
int resultPos = responseData.indexOf("\"result\"");
if (resultPos == -1) {
qWarning() << "[JsonRpcClient] No result field in response:" << responseData;
return QByteArray();
}
int arrayStart = responseData.indexOf('[', resultPos);
int arrayEnd = responseData.indexOf(']', arrayStart);
if (arrayStart == -1 || arrayEnd == -1 || arrayEnd <= arrayStart) {
qWarning() << "[JsonRpcClient] Result array not found or malformed:" << responseData;
return QByteArray();
}
QByteArray arrayContent = responseData.mid(arrayStart + 1, arrayEnd - arrayStart - 1);
// 按逗号分割
QList<QByteArray> items = arrayContent.split(',');
QByteArray result;
for (QByteArray item : items) {
item = item.trimmed();
bool ok = false;
int val = item.toInt(&ok);
if (ok) {
result.append(static_cast<char>(val));
} else if (!item.isEmpty()) {
qWarning() << "[JsonRpcClient] Non-integer value in result array:" << item;
return QByteArray();
}
}
return result;
}
void JsonRpcClient::writeCall(const QString& method, const QJsonArray& params, const QString& module) {
if (socket_.state() != QAbstractSocket::ConnectedState) {