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);
}
}