From 6c142a234673e442561b2c050b727aa4400177d8 Mon Sep 17 00:00:00 2001 From: Thomas Vanbesien Date: Fri, 20 Feb 2026 14:50:39 +0100 Subject: Wire monitored property to OPC UA monitored items MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The monitored bool now calls enableMonitoring/disableMonitoring on the Value attribute. Adds publishingInterval property (default 100ms). Value is no longer read at init — delivered by the monitored item. Empty 4th demo page to verify monitoring stops when navigating away. --- src/OpcUaMonitoredNode.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/OpcUaMonitoredNode.h') diff --git a/src/OpcUaMonitoredNode.h b/src/OpcUaMonitoredNode.h index 5895bea..3e86cb4 100644 --- a/src/OpcUaMonitoredNode.h +++ b/src/OpcUaMonitoredNode.h @@ -56,6 +56,8 @@ class OpcUaMonitoredNode : public QObject, public QQmlParserStatus Q_PROPERTY (QString nodeId READ nodeId WRITE setNodeId NOTIFY nodeIdChanged) Q_PROPERTY ( bool monitored READ monitored WRITE setMonitored NOTIFY monitoredChanged) + Q_PROPERTY (double publishingInterval READ publishingInterval WRITE + setPublishingInterval NOTIFY publishingIntervalChanged) Q_PROPERTY (QVariant value READ value NOTIFY valueChanged) Q_PROPERTY (bool writable READ writable NOTIFY writableChanged) Q_PROPERTY (OpcUaNodeInfo info READ info NOTIFY infoChanged) @@ -69,6 +71,9 @@ public: bool monitored () const; void setMonitored (bool monitored); + double publishingInterval () const; + void setPublishingInterval (double interval); + QVariant value () const; bool writable () const; OpcUaNodeInfo info () const; @@ -89,6 +94,7 @@ public: signals: void nodeIdChanged (); void monitoredChanged (); + void publishingIntervalChanged (); void valueChanged (); void writableChanged (); void infoChanged (); @@ -101,14 +107,21 @@ private slots: void handleClientConnectedChanged (); void handleAttributeWritten (QOpcUa::NodeAttribute attr, QOpcUa::UaStatusCode statusCode); + void handleEnableMonitoringFinished (QOpcUa::NodeAttribute attr, + QOpcUa::UaStatusCode statusCode); + void handleDisableMonitoringFinished (QOpcUa::NodeAttribute attr, + QOpcUa::UaStatusCode statusCode); private: void setupNode (); void teardownNode (); + void startMonitoring (); + void stopMonitoring (); QVariant coerceValue (const QVariant &input) const; QString m_nodeId; bool m_monitored = true; + double m_publishingInterval = 100.0; bool m_componentComplete = false; QOpcUaNode *m_node = nullptr; -- cgit v1.2.3