using DMS.Infrastructure.Models; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace DMS.Infrastructure.Interfaces.Services { /// /// OPC UA服务接口,定义了与OPC UA服务器进行通信所需的方法 /// public interface IOpcUaService { /// /// 获取当前连接状态 /// bool IsConnected { get; } /// /// 异步连接到OPC UA服务器 /// /// 表示异步操作的任务 Task ConnectAsync(string serverUrl); /// /// 异步断开与OPC UA服务器的连接 /// /// 表示异步操作的任务 Task DisconnectAsync(); /// /// 浏览指定节点的子节点 /// /// 要浏览的节点,如果为null则浏览根节点 /// 表示异步操作的任务,包含子节点列表 Task> BrowseNode(OpcUaNode? nodeToBrowse); /// /// 订阅单个节点的数据变化 /// /// 要订阅的节点ID /// 数据变化时的回调方法 /// 发布间隔(毫秒) /// 采样间隔(毫秒) void SubscribeToNode(string nodeId, Action onDataChange, int publishingInterval = 1000, int samplingInterval = 500); /// /// 订阅多个节点的数据变化 /// /// 要订阅的节点ID列表 /// 数据变化时的回调方法 /// 发布间隔(毫秒) /// 采样间隔(毫秒) void SubscribeToNode(List nodeIds, Action onDataChange, int publishingInterval = 1000, int samplingInterval = 500); /// /// 取消订阅单个节点 /// /// 要取消订阅的节点的ID void UnsubscribeFromNode(string nodeId); /// /// 取消订阅多个节点 /// /// 要取消订阅的节点ID列表 void UnsubscribeFromNode(List nodeIds); /// /// 获取当前已订阅的所有节点 /// /// 已订阅节点的列表 List GetSubscribedNodes(); /// /// 异步读取单个节点的值 /// /// 要读取的节点 /// 表示异步操作的任务 Task ReadNodeValueAsync(OpcUaNode node); /// /// 异步读取多个节点的值 /// /// 要读取的节点列表 /// 表示异步操作的任务 Task ReadNodeValuesAsync(List nodes); /// /// 异步写入单个节点的值 /// /// 要写入的节点 /// 要写入的值 /// 表示异步操作的任务,如果写入成功返回true,否则返回false Task WriteNodeValueAsync(OpcUaNode node, object value); /// /// 异步写入多个节点的值 /// /// 要写入的节点及其对应值的字典 /// 表示异步操作的任务,如果所有写入都成功返回true,否则返回false Task WriteNodeValuesAsync(Dictionary nodesToWrite); } }