using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using HslCommunication; using XP.Hardware.PLC.Configs; namespace XP.Hardware.Plc.Abstractions { public interface IPlcClient : IDisposable { /// /// 连接状态 /// bool IsConnected { get; } /// /// 使用配置连接PLC /// /// PLC配置 /// Task ConnectAsync(PlcConfig config); /// /// 断开连接 /// void Disconnect(); /// /// 读取任意类型数据 /// /// 期望的数据类型 /// 地址 (如 "DB1.0.5" 或 "DB1.0" for byte) /// Task ReadAsync(string address); /// /// 写入任意类型数据 /// /// 数据类型 /// 地址 /// 值 /// Task WriteAsync(string address, T value); /// /// 按指定长度读取字符串 | Read string with specified length /// /// 地址 | Address /// 字符串长度(字节数)| String length in bytes /// 读取的字符串 | Read string Task ReadStringAsync(string address, ushort length); /// /// 按指定长度写入字符串 | Write string with specified length /// /// 地址 | Address /// 字符串值 | String value /// 字符串长度(字节数)| String length in bytes /// 是否成功 | Whether succeeded Task WriteStringAsync(string address, string value, ushort length); /// /// 批量读取字节数据 (对应旧代码中的 ReadDatas) /// /// 数据块 /// 起始地址 /// 读取长度(字节) /// Task ReadBytesAsync(string dbBlock, int startAddress, int length); /// /// 写入字节数据 /// /// 数据块 /// 起始地址 /// 数据 /// Task WriteBytesAsync(string dbBlock, int startAddress, byte[] data); } }