跳到主要内容

SetMonitoringMode

每个 MonitoredItem 有 3 种 monitoring mode:

enum class MonitoringMode : int32_t {
Disabled = 0,
Sampling = 1,
Reporting = 2,
};
Mode服务端采样服务端推送用途
Disabled (0)××完全停 (不采也不推)
Sampling (1)×采样但不推 (记历史 / 死区计算)
Reporting (2, 默认)正常运作
前置阅读
  • 想停整条订阅 (而不是逐 MI) 看下面 SetPublishingEnabled.
  • 修改采样参数请看 Modify.

批量切

std::vector<Status> SetMonitoringMode(
MonitoringMode mode,
std::vector<uint32_t> const& mi_handles);
// 临时停止全部采集 (例如设备维护期间)
std::vector<uint32_t> all_handles = { h1, h2, h3, h4 };
auto statuses = sub.SetMonitoringMode(MonitoringMode::Disabled, all_handles);

单 MI 切

Status SetMode(uint32_t mi_handle, MonitoringMode mode);
sub.SetMode(handle, MonitoringMode::Disabled);   // 暂停某个 MI
sub.SetMode(handle, MonitoringMode::Reporting); // 恢复

整条订阅启停 (SetPublishingEnabled)

如果想停整条订阅 (而不是逐 MI), 用 SetPublishingEnabled:

sub.SetPublishingEnabled(true);   // 开启
sub.SetPublishingEnabled(false); // 暂停

三种粒度对比

粒度API适用
整条订阅sub.SetPublishingEnabled(bool)临时全停 (维护)
一批 MIsub.SetMonitoringMode(mode, handles)部分模块停
单 MIsub.SetMode(handle, mode)精细控制
完全删除sub.Remove(handle) / Subscription 析构永久不要了

下一步