本次提交对 OPC UA 服务的接口进行了重构,主要变更如下:

1.  简化接口: OpcUaService 的 SubscribeToNode 和 UnsubscribeFromNode 方法的参数类型从 OpcUaNode 对象更改为 string 类型的节点ID。这使得上层服务在调用时无需构造完整的
  OpcUaNode 对象,降低了接口的复杂性。

  2.  更新实现: OpcUaService 和 OpcUaServiceManager 的内部实现已更新,以兼容新的基于字符串的接口。

  3.  优化变量更新: OpcUaServiceManager 中的 OnVariableChanged
  事件处理逻辑被修改,现在能够更细粒度地处理单个变量的激活状态和轮询间隔的变化,避免了不必要的整个设备订阅的重新加载。
This commit is contained in:
2025-10-02 22:03:31 +08:00
parent acd397ea55
commit c4a840c8b8
3 changed files with 208 additions and 205 deletions

View File

@@ -37,32 +37,32 @@ namespace DMS.Infrastructure.Interfaces.Services
/// <summary>
/// 订阅单个节点的数据变化
/// </summary>
/// <param name="node">要订阅的节点</param>
/// <param name="nodeId">要订阅的节点ID</param>
/// <param name="onDataChange">数据变化时的回调方法</param>
/// <param name="publishingInterval">发布间隔(毫秒)</param>
/// <param name="samplingInterval">采样间隔(毫秒)</param>
void SubscribeToNode(OpcUaNode node, Action<OpcUaNode> onDataChange, int publishingInterval = 1000, int samplingInterval = 500);
void SubscribeToNode(string nodeId, Action<OpcUaNode> onDataChange, int publishingInterval = 1000, int samplingInterval = 500);
/// <summary>
/// 订阅多个节点的数据变化
/// </summary>
/// <param name="nodes">要订阅的节点列表</param>
/// <param name="nodeIds">要订阅的节点ID列表</param>
/// <param name="onDataChange">数据变化时的回调方法</param>
/// <param name="publishingInterval">发布间隔(毫秒)</param>
/// <param name="samplingInterval">采样间隔(毫秒)</param>
void SubscribeToNode(List<OpcUaNode> nodes, Action<OpcUaNode> onDataChange, int publishingInterval = 1000, int samplingInterval = 500);
void SubscribeToNode(List<string> nodeIds, Action<OpcUaNode> onDataChange, int publishingInterval = 1000, int samplingInterval = 500);
/// <summary>
/// 取消订阅单个节点
/// </summary>
/// <param name="node">要取消订阅的节点</param>
void UnsubscribeFromNode(OpcUaNode node);
/// <param name="nodeId">要取消订阅的节点的ID</param>
void UnsubscribeFromNode(string nodeId);
/// <summary>
/// 取消订阅多个节点
/// </summary>
/// <param name="nodes">要取消订阅的节点列表</param>
void UnsubscribeFromNode(List<OpcUaNode> nodes);
/// <param name="nodeIds">要取消订阅的节点ID列表</param>
void UnsubscribeFromNode(List<string> nodeIds);
/// <summary>
/// 获取当前已订阅的所有节点