OPC UA 订阅在快速处理程序中获取显示名称
OPC UA Subscription get DisplayName in Fast Handler
目前我正在将 DataAcquisition 转移到订阅。由于我想观察多个值,因此我使用一组 MonitoredItems 创建一个订阅并使用 FastDataChangeNotificationEventHandler。在数据更改时, delegate/method 被调用,我可以毫无问题地获取新值。但是我看不到值属于哪个节点。我怎样才能得到这些信息?
处理程序的签名是
public static void FastHandler(Subscription subscription,
DataChangeNotification notification, IList<string> stringTable)
我在 notification.MonitoredItems.ElementAt(i).Value.Value
中找到了更新后的值,但是在元素(类型 MonitoredItemNotification
)中没有 DisplayName 或节点 ID 允许我识别该值所属的节点。
参数subscription
保存了关于实际订阅的信息,但没有告诉nodes/items中的哪个被更新了。
例如:
我正在监控节点 A、B 和 C。
A 和 C 改变它们的值
我按预期接到了 FastHandler 的电话
在 notification.MonitoredItems
中,我找到了 2 个项目,但没有迹象表明 link 有哪些节点。
我是不是漏掉了什么?我怎样才能 link 我正在研究的节点的那些新值?
我正在使用 OPC UA 的参考 .Net 实现
参考实施团队的某人帮助了我:
notification.MonitoredItems
元素还包含一个字段 ClientHandle
- 这个 ClientHandle
映射对应的 subscription.MonitoredItems
元素的 ClientHandle
.
我和同事花了很多时间 - 希望这可以帮助其他人。
目前我正在将 DataAcquisition 转移到订阅。由于我想观察多个值,因此我使用一组 MonitoredItems 创建一个订阅并使用 FastDataChangeNotificationEventHandler。在数据更改时, delegate/method 被调用,我可以毫无问题地获取新值。但是我看不到值属于哪个节点。我怎样才能得到这些信息?
处理程序的签名是
public static void FastHandler(Subscription subscription,
DataChangeNotification notification, IList<string> stringTable)
我在 notification.MonitoredItems.ElementAt(i).Value.Value
中找到了更新后的值,但是在元素(类型 MonitoredItemNotification
)中没有 DisplayName 或节点 ID 允许我识别该值所属的节点。
参数subscription
保存了关于实际订阅的信息,但没有告诉nodes/items中的哪个被更新了。
例如:
我正在监控节点 A、B 和 C。
A 和 C 改变它们的值
我按预期接到了 FastHandler 的电话
在 notification.MonitoredItems
中,我找到了 2 个项目,但没有迹象表明 link 有哪些节点。
我是不是漏掉了什么?我怎样才能 link 我正在研究的节点的那些新值?
我正在使用 OPC UA 的参考 .Net 实现
参考实施团队的某人帮助了我:
notification.MonitoredItems
元素还包含一个字段 ClientHandle
- 这个 ClientHandle
映射对应的 subscription.MonitoredItems
元素的 ClientHandle
.
我和同事花了很多时间 - 希望这可以帮助其他人。