diff options
| -rw-r--r-- | src/OpcUaMonitoredNode.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/OpcUaMonitoredNode.cpp b/src/OpcUaMonitoredNode.cpp index 922ad43..c5f1dc0 100644 --- a/src/OpcUaMonitoredNode.cpp +++ b/src/OpcUaMonitoredNode.cpp @@ -568,6 +568,12 @@ OpcUaMonitoredNode::writeValueAtRange (const QVariant &value, return; } + // OPC UA requires an array value for index-range writes, even for a + // single element. Wrap scalars in a one-element list so strict + // servers don't reject with BadIndexRangeNoData. + if (coerced.metaType ().id () != QMetaType::QVariantList) + coerced = QVariant::fromValue (QVariantList{ coerced }); + m_pendingRangeWrite = true; if (!m_node->writeAttributeRange (QOpcUa::NodeAttribute::Value, coerced, |
