将Feature/XP.Common和Feature/XP.Hardware分支合并至Develop/XP.forHardwareAndCommon,完善XPapp注册和相关硬件类库通用类库功能。

This commit is contained in:
QI Mingxuan
2026-04-16 17:31:13 +08:00
parent 6ec4c3ddaa
commit 2bd6e566c3
581 changed files with 74600 additions and 222 deletions
@@ -0,0 +1,83 @@
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
{
/// <summary>
/// 连接状态
/// </summary>
bool IsConnected { get; }
/// <summary>
/// 使用配置连接PLC
/// </summary>
/// <param name="config">PLC配置</param>
/// <returns></returns>
Task<bool> ConnectAsync(PlcConfig config);
/// <summary>
/// 断开连接
/// </summary>
void Disconnect();
/// <summary>
/// 读取任意类型数据
/// </summary>
/// <typeparam name="T">期望的数据类型</typeparam>
/// <param name="address">地址 (如 "DB1.0.5" 或 "DB1.0" for byte)</param>
/// <returns></returns>
Task<T> ReadAsync<T>(string address);
/// <summary>
/// 写入任意类型数据
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="address">地址</param>
/// <param name="value">值</param>
/// <returns></returns>
Task<bool> WriteAsync<T>(string address, T value);
/// <summary>
/// 按指定长度读取字符串 | Read string with specified length
/// </summary>
/// <param name="address">地址 | Address</param>
/// <param name="length">字符串长度(字节数)| String length in bytes</param>
/// <returns>读取的字符串 | Read string</returns>
Task<string> ReadStringAsync(string address, ushort length);
/// <summary>
/// 按指定长度写入字符串 | Write string with specified length
/// </summary>
/// <param name="address">地址 | Address</param>
/// <param name="value">字符串值 | String value</param>
/// <param name="length">字符串长度(字节数)| String length in bytes</param>
/// <returns>是否成功 | Whether succeeded</returns>
Task<bool> WriteStringAsync(string address, string value, ushort length);
/// <summary>
/// 批量读取字节数据 (对应旧代码中的 ReadDatas)
/// </summary>
/// <param name="dbBlock">数据块</param>
/// <param name="startAddress">起始地址</param>
/// <param name="length">读取长度(字节)</param>
/// <returns></returns>
Task<byte[]> ReadBytesAsync(string dbBlock, int startAddress, int length);
/// <summary>
/// 写入字节数据
/// </summary>
/// <param name="dbBlock">数据块</param>
/// <param name="startAddress">起始地址</param>
/// <param name="data">数据</param>
/// <returns></returns>
Task<bool> WriteBytesAsync(string dbBlock, int startAddress, byte[] data);
}
}