本页内容

QOpcUaMonitoringParameters Class

QOpcUaMonitoringParameters 提供了一种设置和检索订阅及受监控项参数的方法。更多内容...

标题: #include <QOpcUaMonitoringParameters>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpcUa)
target_link_libraries(mytarget PRIVATE Qt6::OpcUa)
qmake: QT += opcua

公共类型

class DataChangeFilter
class EventFilter
enum class MonitoringMode { Disabled, Sampling, Reporting }
enum class Parameter { PublishingEnabled, PublishingInterval, LifetimeCount, MaxKeepAliveCount, MaxNotificationsPerPublish, …, TriggeredItemIds }
flags Parameters
enum class SubscriptionType { Shared, Exclusive }

公共函数

QOpcUaMonitoringParameters()
QOpcUaMonitoringParameters(double publishingInterval, QOpcUaMonitoringParameters::SubscriptionType shared = SubscriptionType::Shared, quint32 subscriptionId = 0)
QOpcUaMonitoringParameters(const QOpcUaMonitoringParameters &other)
~QOpcUaMonitoringParameters()
void clearFilter()
void clearFilterResult()
bool discardOldest() const
(since 6.7) QHash<quint32, QOpcUa::UaStatusCode> failedTriggeredItemsStatus() const
QVariant filter() const
QVariant filterResult() const
QString indexRange() const
bool isPublishingEnabled() const
quint32 lifetimeCount() const
quint32 maxKeepAliveCount() const
quint32 maxNotificationsPerPublish() const
quint32 monitoredItemId() const
QOpcUaMonitoringParameters::MonitoringMode monitoringMode() const
quint8 priority() const
double publishingInterval() const
quint32 queueSize() const
double samplingInterval() const
void setDiscardOldest(bool discardOldest)
(since 6.7) void setFailedTriggeredItemsStatus(const QHash<quint32, QOpcUa::UaStatusCode> &status)
void setFilter(const QOpcUaMonitoringParameters::DataChangeFilter &filter)
void setFilter(const QOpcUaMonitoringParameters::EventFilter &eventFilter)
void setFilterResult(const QOpcUaEventFilterResult &eventFilterResult)
void setIndexRange(const QString &indexRange)
void setLifetimeCount(quint32 lifetimeCount)
void setMaxKeepAliveCount(quint32 maxKeepAliveCount)
void setMaxNotificationsPerPublish(quint32 maxNotificationsPerPublish)
void setMonitoredItemId(quint32 monitoredItemId)
void setMonitoringMode(QOpcUaMonitoringParameters::MonitoringMode monitoringMode)
void setPriority(quint8 priority)
void setPublishingEnabled(bool publishingEnabled)
void setPublishingInterval(double publishingInterval)
void setQueueSize(quint32 queueSize)
void setSamplingInterval(double samplingInterval)
void setStatusCode(QOpcUa::UaStatusCode statusCode)
void setSubscriptionId(quint32 subscriptionId)
void setSubscriptionType(QOpcUaMonitoringParameters::SubscriptionType shared)
(since 6.7) void setTriggeredItemIds(const QSet<quint32> &ids)
QOpcUa::UaStatusCode statusCode() const
quint32 subscriptionId() const
QOpcUaMonitoringParameters::SubscriptionType subscriptionType() const
(since 6.7) QSet<quint32> triggeredItemIds() const
QOpcUaMonitoringParameters &operator=(const QOpcUaMonitoringParameters &other)

详细描述

该类用于QOpcUaNode::enableMonitoring()请求,并作为QOpcUaNode::monitoringStatus()的返回值;在此情况下,它包含来自服务器的更新后的值。

用法

对于大多数用例,只需指定发布间隔即可。

QOpcUaMonitoringParameters p(100); // Set a publishing interval of 100ms and share the subscription.
node->enableMonitoring(QOpcUa::NodeAttribute::Value, p);

如果需要exclusive 订阅,请使用第二个参数。

QOpcUaMonitoringParameters p(100, QOpcUaMonitoringParameters::SubscriptionType::Exclusive); // Create a new subscription

要向现有订阅添加其他项目,请在后续调用QOpcUaNode::enableMonitoring() 时使用第三个参数。

quint32 subscriptionId = node->monitoringStatus(QOpcUa::NodeAttribute::Value).subscriptionId();
QOpcUaMonitoringParameters p(100, QOpcUaMonitoringParameters::SubscriptionType::Shared, subscriptionId); // Add the monitored item to this subscription

如果需要其他参数,则必须使用设置器方法进行设置。

成员类型文档

enum class QOpcUaMonitoringParameters::MonitoringMode

此枚举用于设置受监控项的监控模式。

常量值描述
QOpcUaMonitoringParameters::MonitoringMode::Disabled0采样已禁用,且不会生成任何通知。
QOpcUaMonitoringParameters::MonitoringMode::Sampling1已启用采样,会生成通知并将其放入队列,但报告功能已禁用。
QOpcUaMonitoringParameters::MonitoringMode::Reporting2已启用采样,通知已生成并排队,报告功能已启用。

enum class QOpcUaMonitoringParameters::Parameter
flags QOpcUaMonitoringParameters::Parameters

列举了可通过 `QOpcUaNode::modifyMonitoring()` 在运行时修改的参数。并非所有值都能保证被所有插件支持。若不支持,将在 `QOpcUaNode::monitoringStatusChanged ` 信号中报告。

常量值
QOpcUaMonitoringParameters::Parameter::PublishingEnabled(1 << 0)
QOpcUaMonitoringParameters::Parameter::PublishingInterval(1 << 1)
QOpcUaMonitoringParameters::Parameter::LifetimeCount(1 << 2)
QOpcUaMonitoringParameters::Parameter::MaxKeepAliveCount(1 << 3)
QOpcUaMonitoringParameters::Parameter::MaxNotificationsPerPublish(1 << 4)
QOpcUaMonitoringParameters::Parameter::Priority(1 << 5)
QOpcUaMonitoringParameters::Parameter::SamplingInterval(1 << 6)
QOpcUaMonitoringParameters::Parameter::Filter(1 << 7)
QOpcUaMonitoringParameters::Parameter::QueueSize(1 << 8)
QOpcUaMonitoringParameters::Parameter::DiscardOldest(1 << 9)
QOpcUaMonitoringParameters::Parameter::MonitoringMode(1 << 10)
QOpcUaMonitoringParameters::Parameter::TriggeredItemIds (since Qt 6.7)(1 << 11)

Parameters 类型是QFlags<Parameter> 的 typedef 定义。它存储 Parameter 值的“或”组合。

enum class QOpcUaMonitoringParameters::SubscriptionType

此枚举用于确定被监控项是否可以添加到共享订阅中,还是必须创建一个新的订阅。

常量值描述
QOpcUaMonitoringParameters::SubscriptionType::Shared0与具有相同间隔的其他受监控项共享订阅
QOpcUaMonitoringParameters::SubscriptionType::Exclusive1为此属性请求新的订阅

成员函数文档

QOpcUaMonitoringParameters::QOpcUaMonitoringParameters()

QOpcUaMonitoringParameters 的默认构造函数。

QOpcUaMonitoringParameters::QOpcUaMonitoringParameters(double publishingInterval, QOpcUaMonitoringParameters::SubscriptionType shared = SubscriptionType::Shared, quint32 subscriptionId = 0)

这是一个构造函数,它涵盖了Qt OPC UA 用户的大多数使用场景。必须提供publishingInterval ,shared 和subscriptionId 为可选。

QOpcUaMonitoringParameters::QOpcUaMonitoringParameters(const QOpcUaMonitoringParameters &other)

根据other 的值构建一个QOpcuaMonitoringParameters对象。

[noexcept] QOpcUaMonitoringParameters::~QOpcUaMonitoringParameters()

QOpcUaMonitoringParameters 的析构函数。

void QOpcUaMonitoringParameters::clearFilter()

从监控参数中移除当前过滤器。

另请参阅 filter() 和setFilter()。

void QOpcUaMonitoringParameters::clearFilterResult()

从监控参数中移除当前的筛选结果。

另请参阅 filterResult() 和setFilterResult()。

bool QOpcUaMonitoringParameters::discardOldest() const

返回被监控项的“discardOldest”设置。

另请参阅 setDiscardOldest()。

[since 6.7] QHash<quint32, QOpcUa::UaStatusCode> QOpcUaMonitoringParameters::failedTriggeredItemsStatus() const

返回由 `setTriggeredItemIds()` 触发但未能成功添加的所有项的状态码。

该函数于 Qt 6.7 版本中引入。

另请参阅 setFailedTriggeredItemsStatus()。

QVariant QOpcUaMonitoringParameters::filter() const

返回当前的过滤器。

另请参阅 ` setFilter()`。

QVariant QOpcUaMonitoringParameters::filterResult() const

返回过滤结果。

对于属性监控,此值为空。对于事件监控,如果服务器在过滤器中未检测到任何错误,则过滤结果可能为空。

另请参阅 setFilterResult()。

QString QOpcUaMonitoringParameters::indexRange() const

返回被监控项的索引范围。

另请参阅 setIndexRange()。

bool QOpcUaMonitoringParameters::isPublishingEnabled() const

返回该订阅的发布模式。

quint32 QOpcUaMonitoringParameters::lifetimeCount() const

返回订阅的存活次数。

另请参阅 setLifetimeCount()。

quint32 QOpcUaMonitoringParameters::maxKeepAliveCount() const

返回该订阅的最大保持活动计数。

另请参阅 setMaxKeepAliveCount()。

quint32 QOpcUaMonitoringParameters::maxNotificationsPerPublish() const

返回该订阅中“每条发布最多通知数”的值。

另请参阅 setMaxNotificationsPerPublish()。

quint32 QOpcUaMonitoringParameters::monitoredItemId() const

返回服务器分配的受监控项 ID。如果受监控项 ID 为 0,则表示未能成功创建该受监控项。

另请参阅 setMonitoredItemId()。

QOpcUaMonitoringParameters::MonitoringMode QOpcUaMonitoringParameters::monitoringMode() const

返回被监控项的监控模式。

另请参阅 setMonitoringMode()。

quint8 QOpcUaMonitoringParameters::priority() const

返回用于被监控项的订阅的优先级。

另请参阅 setPriority()。

double QOpcUaMonitoringParameters::publishingInterval() const

返回订阅的发布间隔。该间隔以毫秒为单位。

另请参阅 setPublishingInterval()。

quint32 QOpcUaMonitoringParameters::queueSize() const

返回被监控项的队列大小。

另请参阅 setQueueSize()。

double QOpcUaMonitoringParameters::samplingInterval() const

返回被监控项的调整后采样间隔。该间隔以毫秒为单位。

另请参阅 setSamplingInterval()。

void QOpcUaMonitoringParameters::setDiscardOldest(bool discardOldest)

将受监控项的“discardOldest ”设置为“discardOldest ”。

另请参阅 discardOldest()。

[since 6.7] void QOpcUaMonitoringParameters::setFailedTriggeredItemsStatus(const QHash<quint32, QOpcUa::UaStatusCode> &status)

设置所有已触发但未能成功添加到status 中的项目的状态码。作为客户端设置此值不会产生任何效果。

该函数在 Qt 6.7 中引入。

另请参阅 failedTriggeredItemsStatus()。

void QOpcUaMonitoringParameters::setFilter(const QOpcUaMonitoringParameters::DataChangeFilter &filter)

将DataChangeFilter filter 设置为受监控项的过滤器。如果已存在其他数据变更过滤器或事件过滤器,则将其替换。

如果服务器不接受该过滤器,将在QOpcUaNode::enableMonitoring() 请求完成后通过状态码予以提示。

另请参阅 filter()。

void QOpcUaMonitoringParameters::setFilter(const QOpcUaMonitoringParameters::EventFilter &eventFilter)

请求将eventFilter 作为被监控项的过滤器。如果已存在其他事件过滤器或数据变更过滤器,则该过滤器将被替换。如果服务器不接受该过滤器,将在QOpcUaNode::enableMonitoring()请求完成后通过状态码和事件过滤器结果予以提示。

另请参阅 filter()。

void QOpcUaMonitoringParameters::setFilterResult(const QOpcUaEventFilterResult &eventFilterResult)

将事件过滤器结果设置为eventFilterResult 。

此方法仅限后端使用,用户自行设置事件过滤器结果不会产生任何效果。

另请参阅 filterResult()。

void QOpcUaMonitoringParameters::setIndexRange(const QString &indexRange)

请求将indexRange 作为受监控项的索引范围。有关索引范围字符串的详细信息,请参阅QOpcUaNode::readAttributeRange()。

另请参阅 indexRange()。

void QOpcUaMonitoringParameters::setLifetimeCount(quint32 lifetimeCount)

将订阅的“生命周期计数”设置为lifetimeCount 。

另请参阅 lifetimeCount()。

void QOpcUaMonitoringParameters::setMaxKeepAliveCount(quint32 maxKeepAliveCount)

将订阅的最大保持活动计数设置为maxKeepAliveCount 。

另请参阅 maxKeepAliveCount()。

void QOpcUaMonitoringParameters::setMaxNotificationsPerPublish(quint32 maxNotificationsPerPublish)

将maxNotificationsPerPublish 设置为该订阅的“每次发布最大通知数”值。

另请参阅 maxNotificationsPerPublish()。

void QOpcUaMonitoringParameters::setMonitoredItemId(quint32 monitoredItemId)

将受监控项的 ID 设置为monitoredItemId 。

作为客户端设置此值不会产生任何效果。

另请参阅 monitoredItemId()。

void QOpcUaMonitoringParameters::setMonitoringMode(QOpcUaMonitoringParameters::MonitoringMode monitoringMode)

将monitoringMode 设置为被监控项的监控模式。

另请参阅 monitoringMode()。

void QOpcUaMonitoringParameters::setPriority(quint8 priority)

将priority 设为该订阅的优先级。

另请参阅 priority()。

void QOpcUaMonitoringParameters::setPublishingEnabled(bool publishingEnabled)

将publishingEnabled 设置为订阅的发布模式。

另请参阅 isPublishingEnabled()。

void QOpcUaMonitoringParameters::setPublishingInterval(double publishingInterval)

请求将publishingInterval 设为订阅的发布间隔。该间隔以毫秒为单位。

另请参阅 publishingInterval()。

void QOpcUaMonitoringParameters::setQueueSize(quint32 queueSize)

将queueSize 设置为受监控项的队列大小。

另请参阅 queueSize()。

void QOpcUaMonitoringParameters::setSamplingInterval(double samplingInterval)

请求将samplingInterval 设为被监控项的采样间隔。该间隔以毫秒为单位。

另请参阅 samplingInterval()。

void QOpcUaMonitoringParameters::setStatusCode(QOpcUa::UaStatusCode statusCode)

将状态码设置为statusCode 。

另请参阅 statusCode()。

void QOpcUaMonitoringParameters::setSubscriptionId(quint32 subscriptionId)

使用 `subscriptionId` 请求在已知的订阅上创建受监控的项目。

另请参阅 subscriptionId()。

void QOpcUaMonitoringParameters::setSubscriptionType(QOpcUaMonitoringParameters::SubscriptionType shared)

将订阅类型设置为“shared ”。

另请参阅 subscriptionType()。

[since 6.7] void QOpcUaMonitoringParameters::setTriggeredItemIds(const QSet<quint32> &ids)

根据 OPC UA 1.05 规范 5.12.1.6 的描述,为ids 中的所有受监控项添加触发链接。

ids 中的值必须是同一订阅下其他受监控项的 ID。如果这些项的监控模式设置为“采样”,则每当此监控检测到数据变化时,其数据变化通知就会发送给客户端。

任何无法添加的 ID 将不会被纳入监控状态,而是会显示在failedTriggeredItemsStatus() 中。

将此设置修改为空集将移除所有触发链接。

此功能自 Qt 6.7 起引入。

另请参阅 triggeredItemIds()。

QOpcUa::UaStatusCode QOpcUaMonitoringParameters::statusCode() const

返回被监控项创建的状态码。

另请参阅 setStatusCode()。

quint32 QOpcUaMonitoringParameters::subscriptionId() const

返回已分配的订阅 ID。

另请参阅 setSubscriptionId()。

QOpcUaMonitoringParameters::SubscriptionType QOpcUaMonitoringParameters::subscriptionType() const

返回订阅类型。

另请参阅 setSubscriptionType()。

[since 6.7] QSet<quint32> QOpcUaMonitoringParameters::triggeredItemIds() const

返回由该受监视项触发的受监视项的 ID。

该函数于 Qt 6.7 中引入。

另请参阅 setTriggeredItemIds()。

QOpcUaMonitoringParameters &QOpcUaMonitoringParameters::operator=(const QOpcUaMonitoringParameters &other)

将other 的值赋给该对象。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.