OPC UA实施订阅机制

问题描述

我在使用OPC UA订阅通知时遇到问题。我要订阅服务器数据。因此,我定义了一个MonitoredItem列表来捕获通知

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);
        }
}

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

解决方法

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

session.AddSubscription(subscription)