.net core 在.Net核心OPC UA客户端上使用基于事件的MonitorEditor处理Sinumerik报警

.net core 在.Net核心OPC UA客户端上使用基于事件的MonitorEditor处理Sinumerik报警,.net-core,event-handling,opc-ua,opc,siemens,.net Core,Event Handling,Opc Ua,Opc,Siemens,我正试图利用基于事件的监视项监视OPC UA客户端上的报警事件。我订阅节点:ns=2;s=Sinumerik并添加相应的属性和过滤器。稍后,我将使用OnNotification()方法处理通知,如下面的代码所示 var list = new List<MonitoredItem> { new MonitoredItem(_subscription.DefaultItem) {StartNodeId = "ns=2;s=Sinumerik" } }; foreac

我正试图利用基于事件的监视项监视OPC UA客户端上的报警事件。我订阅节点:
ns=2;s=Sinumerik
并添加相应的属性和过滤器。稍后,我将使用OnNotification()方法处理通知,如下面的代码所示

var list = new List<MonitoredItem> { new MonitoredItem(_subscription.DefaultItem) {StartNodeId = "ns=2;s=Sinumerik" } };

foreach (MonitoredItem item in list)
{
    item.AttributeId = Attributes.EventNotifier;
    item.MonitoringMode = MonitoringMode.Reporting;
    item.SamplingInterval = -1;
    item.QueueSize = 100;
    item.DiscardOldest = false;
    EventFilter filter = new EventFilter();
    filter.AddSelectClause(ObjectTypes.BaseEventType, Opc.Ua.BrowseNames.Message);
    filter.AddSelectClause(ObjectTypes.BaseEventType, Opc.Ua.BrowseNames.Severity);
    item.Filter = filter;
    item.Notification += OnNotification;
}

_subscriptions[subscriptionNum].Create();
_subscriptions[subscriptionNum].ApplyChanges();
我收到事件通知,但MonitoredItem中没有值


这是使用OPC UA监控Sinumerik报警的基于事件的监控项的正确方法吗?

您订阅的是事件,而不是其他数据属性,因此请尝试
item.DequeueEvents()

item.DequeueEvents()
不返回任何值。我看到我需要的一些信息存储在
MonitoredItemNotificationEventArgs e
变量中,但我无法在运行时访问它,只能在调试时访问
private void OnNotification(MonitoredItem item, MonitoredItemNotificationEventArgs e)
{
    foreach (var value in item.DequeueValues())
    {
        Console.WriteLine("Display Name: " + item.DisplayName + "Value: " + value.Value);
    }
}