如何解决OPC UA 订阅在 Fast Handler
目前我正在将 DataAcquisition 转移到 Subscriptions。由于我想观察多个值,因此我使用一组 MonitoredItems 创建一个订阅并使用 FastDataChangeNotificationEventHandler。在数据更改时,委托/方法被调用,我可以毫无问题地获得新值。但是我看不到该值属于哪个节点。我怎样才能获得这些信息?
处理程序的签名是
public static void FastHandler(Subscription subscription,DataChangeNotification notification,IList<string> stringTable)
我在 notification.MonitoredItems.ElementAt(i).Value.Value
中找到更新的值,但在元素(类型 MonitoredItemNotification
)中没有显示名称或节点 ID 允许我识别该值所属的节点。
参数 subscription
包含有关实际订阅的信息,但不说明更新了其中的哪些节点/项目。
例如:
我正在监控节点 A、B 和 C。
A 和 C 改变它们的值
我按预期接到了 FastHandler 的呼叫
在 notification.MonitoredItems
中,我找到了 2 个项目,但没有说明链接到哪些节点。
我在这里遗漏了什么吗?如何将这些新值链接到我正在研究的节点?
我正在使用 OPC UA 的参考 .Net 实现
解决方法
参考实施团队的某个人帮助了我:
notification.MonitoredItems
元素还包含一个字段 ClientHandle
- 此 ClientHandle
映射对应的 subscription.MonitoredItems
元素的 ClientHandle
。
是否让我和同事花费了很多时间 - 希望这可以帮助其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。