首页 > 解决方案 > OPC UA 实现订阅机制

问题描述

我在使用 OPC UA 订阅和通知时遇到问题。我想订阅服务器数据。所以我定义了一个受监控的项目列表来捕获通知。

var list = new List<MonitoredItem> {
        new MonitoredItem(subscription.DefaultItem) { DisplayName = "Speed", StartNodeId = "ns=2;i=4"},
    };
Debug.Log(list[0].StartNodeId);
list.ForEach(i => i.Notification += OnNotification);
subscription.AddItems(list);
list.ForEach(i =>  Debug.Log(i.Subscription.Id));

Debug.Log("Add the subscription to the session.");
subscription.PublishingEnabled = true;
session.AddSubscription(subscription);
subscription.Create();

当它收到新的通知时,它应该调用 OnNotification 委托。但在我的情况下,永远不会调用 OnNotification。

private static void OnNotification(MonitoredItem item, MonitoredItemNotificationEventArgs e)
{
        Debug.Log("OnNotification");
        foreach (var value in item.DequeueValues())
        {
            Debug.LogFormat("{0}: {1}, {2}, {3}", item.DisplayName, value.Value, value.SourceTimestamp, value.StatusCode);
        }
}

在这种情况下如何实现订阅机制?

标签: .netunity3dpublish-subscribeopcopc-ua

解决方案


您还需要将订阅添加到您的会话中:

session.AddSubscription(subscription)

推荐阅读