feat: 更新网络配置后端及其api

This commit is contained in:
2025-07-17 20:46:37 +08:00
parent 08a9be543e
commit 0f4386457d
6 changed files with 1158 additions and 108 deletions

View File

@@ -537,6 +537,42 @@ public class UDPClientPool
return resultData.ToArray();
}
/// <summary>
/// 顺序读取多个地址的数据并合并BodyData后返回
/// </summary>
/// <param name="endPoint">IP端点IP地址与端口</param>
/// <param name="taskID">任务ID</param>
/// <param name="addr">地址数组</param>
/// <param name="timeout">超时时间(毫秒)</param>
/// <returns>合并后的BodyData字节数组</returns>
public static async ValueTask<Result<byte[]>> ReadAddrSeq(IPEndPoint endPoint, int taskID, UInt32[] addr, int timeout = 1000)
{
var length = addr.Length;
var resultData = new List<byte>();
for (int i = 0; i < length; i++)
{
var ret = await ReadAddr(endPoint, taskID, addr[i], timeout);
if (!ret.IsSuccessful)
{
logger.Error($"ReadAddrSeq failed at index {i}: {ret.Error}");
return new(ret.Error);
}
if (!ret.Value.IsSuccessful)
{
logger.Error($"ReadAddrSeq failed at index {i}: Read not successful");
return new(new Exception($"ReadAddrSeq failed at index {i}"));
}
var data = ret.Value.Options.Data;
if (data is null)
{
logger.Error($"ReadAddrSeq got null data at index {i}");
return new(new Exception($"ReadAddrSeq got null data at index {i}"));
}
resultData.AddRange(data);
}
return resultData.ToArray();
}
/// <summary>
/// 向设备地址写入32位数据
/// </summary>