diff options
| author | Thomas Vanbesien <tvanbesi@proton.me> | 2026-02-24 16:51:15 +0100 |
|---|---|---|
| committer | Thomas Vanbesien <tvanbesi@proton.me> | 2026-02-24 16:51:15 +0100 |
| commit | 75d77c39924629eaebf6b721a541407e19ced762 (patch) | |
| tree | 27cd8050e0296bf61dc3a007e12c49452cc6cf2b /src/OpcUaMonitoredNode.cpp | |
| parent | 0a3a5c241e0de6587f0c19fd3ef73024fa1d4b52 (diff) | |
| download | BobinkQtOpcUa-75d77c39924629eaebf6b721a541407e19ced762.tar.gz BobinkQtOpcUa-75d77c39924629eaebf6b721a541407e19ced762.zip | |
Add ValueRank and ArrayDimensions to OpcUaNodeInfo
Read both attributes at node setup alongside the existing metadata.
ValueRank is mapped to human-readable names (Scalar, OneDimension, etc.)
and ArrayDimensions is formatted as a comma-separated size list.
Both are shown in the demo tooltip.
Diffstat (limited to 'src/OpcUaMonitoredNode.cpp')
| -rw-r--r-- | src/OpcUaMonitoredNode.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/OpcUaMonitoredNode.cpp b/src/OpcUaMonitoredNode.cpp index c5f1dc0..9155838 100644 --- a/src/OpcUaMonitoredNode.cpp +++ b/src/OpcUaMonitoredNode.cpp @@ -155,6 +155,8 @@ OpcUaMonitoredNode::setupNode () m_node->readAttributes ( QOpcUa::NodeAttribute::DisplayName | QOpcUa::NodeAttribute::Description | QOpcUa::NodeAttribute::NodeClass | QOpcUa::NodeAttribute::DataType + | QOpcUa::NodeAttribute::ValueRank + | QOpcUa::NodeAttribute::ArrayDimensions | QOpcUa::NodeAttribute::AccessLevel); if (m_monitored) @@ -238,6 +240,45 @@ OpcUaMonitoredNode::handleAttributeUpdated (QOpcUa::NodeAttribute attr, m_info.dataType = rawId; } break; + case QOpcUa::NodeAttribute::ValueRank: + { + qint32 vr = value.toInt (); + switch (vr) + { + case -3: + m_info.valueRank = QStringLiteral ("ScalarOrOneDimension"); + break; + case -2: + m_info.valueRank = QStringLiteral ("Any"); + break; + case -1: + m_info.valueRank = QStringLiteral ("Scalar"); + break; + case 0: + m_info.valueRank = QStringLiteral ("OneOrMoreDimensions"); + break; + case 1: + m_info.valueRank = QStringLiteral ("OneDimension"); + break; + case 2: + m_info.valueRank = QStringLiteral ("TwoDimensions"); + break; + default: + m_info.valueRank = QString::number (vr) + + QStringLiteral ("Dimensions"); + break; + } + } + break; + case QOpcUa::NodeAttribute::ArrayDimensions: + { + QStringList dims; + const QVariantList list = value.toList (); + for (const QVariant &dim : list) + dims << QString::number (dim.toUInt ()); + m_info.arrayDimensions = dims.join (QStringLiteral (", ")); + } + break; case QOpcUa::NodeAttribute::AccessLevel: { quint32 bits = value.toUInt (); |
