增加UI配置项

This commit is contained in:
2025-10-16 17:40:00 +08:00
parent eeb5af98eb
commit f88b815723
181 changed files with 718 additions and 465 deletions

View File

@@ -96,18 +96,21 @@ void DataCenter::addMonitoredNode(const QString &nodeId, const QString &nodeName
const QString &varName, const QString &tableName,
const QString &fieldName)
{
if (gOPC_NodeName.contains(nodeId)) {
qWarning() << "节点已存在:" << nodeId;
QString mNodeID = nodeId;
if(!mNodeID.contains("ns=6;s=::AsGlobalPV:"))
mNodeID = "ns=6;s=::AsGlobalPV:"+mNodeID;
if (gOPC_NodeName.contains(mNodeID)) {
qWarning() << "节点已存在:" << mNodeID;
return;
}
// 使用全局变量存储
gOPC_NodeName[nodeId] = nodeName.isEmpty() ? nodeId : nodeName;
gOPC_VarName[nodeId] = varName.isEmpty() ? nodeId : varName;
gOPC_SqlTable[nodeId] = tableName;
gOPC_SqlField[nodeId] = fieldName;
gOPC_NodeList.append(nodeId);
gOPC_NodeValue[nodeId] = QVariant();
gOPC_NodeName[mNodeID] = nodeName.isEmpty() ? mNodeID : nodeName;
gOPC_VarName[mNodeID] = varName.isEmpty() ? mNodeID : varName;
gOPC_SqlTable[mNodeID] = tableName;
gOPC_SqlField[mNodeID] = fieldName;
gOPC_NodeList.append(mNodeID);
gOPC_NodeValue[mNodeID] = QVariant();
}
void DataCenter::browseRecursive(const QString &nodeId)

View File

@@ -196,22 +196,25 @@ bool OpcUaManager::writeNodeValue(const QString &nodeId,
int maxRetry /*= 3*/,
int retryIntervalMs /*= 200*/)
{
QString mNodeID = nodeId;
if(!mNodeID.contains("ns=6;s=::AsGlobalPV:"))
mNodeID = "ns=6;s=::AsGlobalPV:"+mNodeID;
if (!mClient || mClient->state() != QOpcUaClient::Connected) {
qWarning().noquote() << "[OPC] 客户端未连接,写入" << nodeId << "失败";
qWarning().noquote() << "[OPC] 客户端未连接,写入" << mNodeID << "失败";
return false;
}
QOpcUaNode *node = mClient->node(nodeId);
QOpcUaNode *node = mClient->node(mNodeID);
if (!node) {
qWarning().noquote() << "[OPC] 无法写入节点:" << nodeId;
qWarning().noquote() << "[OPC] 无法写入节点:" << mNodeID;
return false;
}
for (int attempt = 1; attempt <= maxRetry; ++attempt) {
/* ---------- 1. 先读当前值 ---------- */
QVariant cur = gOPC_NodeValue[nodeId];
QVariant cur = gOPC_NodeValue[mNodeID];
if (!cur.isValid()) {
//qWarning().noquote() << "读到无效值:" << nodeId<<gOPC_NodeValue[nodeId];
//qWarning().noquote() << "读到无效值:" << mNodeID<<gOPC_NodeValue[mNodeID];
}
/* ---------- 2. 类型转换 ---------- */
@@ -247,12 +250,12 @@ bool OpcUaManager::writeNodeValue(const QString &nodeId,
/* ---------- 4. 失败日志 & 重试 ---------- */
// qWarning().noquote() << "[OPC] 第" << attempt << "/" << maxRetry
// << "次写入失败:" << nodeId << " 等待重试 ...";
// << "次写入失败:" << mNodeID << " 等待重试 ...";
if (attempt < maxRetry)
QThread::msleep(retryIntervalMs);
}
qCritical().noquote() << "[OPC] 最终写入失败:" << nodeId;
qCritical().noquote() << "[OPC] 最终写入失败:" << mNodeID;
return false;
}
QOpcUaClient::ClientState OpcUaManager::connectionState() const