aboutsummaryrefslogtreecommitdiffstats
path: root/demo
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-02-23 17:35:34 +0100
committerThomas Vanbesien <tvanbesi@proton.me>2026-02-23 17:35:34 +0100
commit4ac860baa81f30e3e1fc9aaa42a3f0bb0537543a (patch)
tree3ba02ef1943b0a6fcba49d8066b28c629f2a47a9 /demo
parentdea81e8c330d75eaaa96e7f1915a9824ca23b15d (diff)
downloadBobinkQtOpcUa-4ac860baa81f30e3e1fc9aaa42a3f0bb0537543a.tar.gz
BobinkQtOpcUa-4ac860baa81f30e3e1fc9aaa42a3f0bb0537543a.zip
Add writeValueAtRange for index-range array writes
Diffstat (limited to 'demo')
-rw-r--r--demo/NodePage.qml41
1 files changed, 38 insertions, 3 deletions
diff --git a/demo/NodePage.qml b/demo/NodePage.qml
index e677232..9b23502 100644
--- a/demo/NodePage.qml
+++ b/demo/NodePage.qml
@@ -91,6 +91,19 @@ Page {
]
},
{
+ title: "Index Range Write",
+ description: "Write to specific array elements using OPC UA index"
+ + " range syntax. Examples: \"0\" = first element,"
+ + " \"0:2\" = elements 0–2. Enter the range and the value(s)"
+ + " to write (comma-separated for multi-element ranges).",
+ indexRange: true,
+ nodes: [
+ "ns=1;s=int32_rw_array",
+ "ns=1;s=float_rw_array",
+ "ns=1;s=string_rw_array"
+ ]
+ },
+ {
title: "Non-Existent Nodes",
description: "These node IDs do not exist on the server."
+ " The row should show no value and no metadata in the tooltip.",
@@ -243,19 +256,41 @@ Page {
}
// Column 3: Edit area (writable) or READ-ONLY label
+
+ // Normal write controls (non-index-range pages)
TextField {
id: editField
- visible: node.writable
+ visible: node.writable && !currentPage.indexRange
Layout.fillWidth: true
placeholderText: "Enter value..."
onAccepted: node.writeValue(text)
}
Button {
- id: writeButton
- visible: node.writable
+ visible: node.writable && !currentPage.indexRange
text: "Write"
onClicked: node.writeValue(editField.text)
}
+
+ // Index range write controls
+ TextField {
+ id: rangeField
+ visible: node.writable && currentPage.indexRange === true
+ Layout.preferredWidth: 60
+ placeholderText: "Range"
+ }
+ TextField {
+ id: rangeValueField
+ visible: node.writable && currentPage.indexRange === true
+ Layout.fillWidth: true
+ placeholderText: "Value(s)..."
+ onAccepted: node.writeValueAtRange(text, rangeField.text)
+ }
+ Button {
+ visible: node.writable && currentPage.indexRange === true
+ text: "Write Range"
+ onClicked: node.writeValueAtRange(rangeValueField.text, rangeField.text)
+ }
+
Label {
visible: !node.writable
text: "(READ-ONLY)"