110,536
社区成员
发帖
与我相关
我的任务
分享
public MonitoredItem CreateMonitoredItem(NodeId nodeId, string displayName)
{
if (m_subscription == null)
{
m_subscription = new Subscription(m_session.DefaultSubscription);
m_subscription.PublishingEnabled = true;
m_subscription.PublishingInterval = 1000;
m_subscription.KeepAliveCount = 10;
m_subscription.LifetimeCount = 10;
m_subscription.MaxNotificationsPerPublish = 1000;
m_subscription.Priority = 100;
m_session.AddSubscription(m_subscription);
m_subscription.Create();
}
// add the new monitored item
MonitoredItem monitoredItem = new MonitoredItem(m_subscription.DefaultItem);
monitoredItem.StartNodeId = nodeId;
monitoredItem.AttributeId = Attributes.Value;
monitoredItem.DisplayName = displayName;
monitoredItem.MonitoringMode = MonitoringMode.Reporting;
monitoredItem.SamplingInterval = 1000;
monitoredItem.QueueSize = 0;
monitoredItem.DiscardOldest = true;
monitoredItem.Handle = nodeId;
monitoredItem.Notification += m_MonitoredItem_Notification;
m_subscription.AddItem(monitoredItem);
m_subscription.ApplyChanges();
if (ServiceResult.IsBad(monitoredItem.Status.Error))
{
string tmpStr = monitoredItem.Status.Error.StatusCode.ToString();
}
return monitoredItem;
}
//订阅回调
protected virtual void m_MonitoredItem_Notification(MonitoredItem monitoreditem, MonitoredItemNotificationEventArgs e)
{
// 这个回调函数只在订阅的时候会触发一次,之后服务器对应节点变化不会触发
int a = 0;
}