diff options
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 (); |
