添加环境箱驱动

This commit is contained in:
“hsc”
2026-08-03 09:18:08 +08:00
parent ceae6e3421
commit 5cfb8af9e4

View File

@@ -0,0 +1,199 @@
using Common.Attributes;
using DeviceCommand.Base;
using System;
using System.Threading;
using System.Threading.Tasks;
namespace DeviceCommand.Devices
{
[ACPCommand]
public class RLT1000 : ModbusTcp
{
private const byte SlaveId = 1;
#region
public async Task<ushort> (CancellationToken ct = default)
{
ushort[] re = await ReadHoldingRegistersAsync(SlaveId, 5, 1, ct);
return re[0];
}
public async Task<float> (CancellationToken ct = default)
{
try
{
ushort[] re = await ReadHoldingRegistersAsync(SlaveId, 10, 2, ct);
return ConvertToFloat(re);
}
catch (Exception)
{
return 0;
}
}
public async Task<float> 湿(CancellationToken ct = default)
{
ushort[] re = await ReadHoldingRegistersAsync(SlaveId, 16, 2, ct);
return ConvertToFloat(re);
}
public async Task<float> (CancellationToken ct = default)
{
try
{
ushort[] re = await ReadHoldingRegistersAsync(SlaveId, 22, 2, ct);
return ConvertToFloat(re);
}
catch (Exception)
{
return 0;
}
}
public async Task<float> 1(CancellationToken ct = default)
{
ushort[] re = await ReadHoldingRegistersAsync(SlaveId, 28, 2, ct);
return ConvertToFloat(re);
}
public async Task<float> 2(CancellationToken ct = default)
{
ushort[] re = await ReadHoldingRegistersAsync(SlaveId, 34, 2, ct);
return ConvertToFloat(re);
}
public async Task<float> 3(CancellationToken ct = default)
{
ushort[] re = await ReadHoldingRegistersAsync(SlaveId, 40, 2, ct);
return ConvertToFloat(re);
}
#endregion
#region
public async Task (CancellationToken ct = default)
{
await WriteSingleRegisterAsync(SlaveId, 147, 0, ct);
}
public async Task (CancellationToken ct = default)
{
await WriteSingleRegisterAsync(SlaveId, 147, 1, ct);
}
public async Task (CancellationToken ct = default)
{
await WriteSingleRegisterAsync(SlaveId, 148, 0, ct);
}
public async Task (CancellationToken ct = default)
{
await WriteSingleRegisterAsync(SlaveId, 148, 1, ct);
}
public async Task (CancellationToken ct = default)
{
await WriteSingleRegisterAsync(SlaveId, 149, 0, ct);
}
public async Task (CancellationToken ct = default)
{
await WriteSingleRegisterAsync(SlaveId, 149, 1, ct);
}
public async Task (CancellationToken ct = default)
{
await WriteSingleRegisterAsync(SlaveId, 153, 0, ct);
}
public async Task (CancellationToken ct = default)
{
await WriteSingleRegisterAsync(SlaveId, 153, 1, ct);
}
public async Task (float , CancellationToken ct = default)
{
var tmp = ConvertFromFloat();
await WriteMultipleRegistersAsync(SlaveId, 154, tmp, ct);
}
public async Task 湿(float 湿, CancellationToken ct = default)
{
var tmp = ConvertFromFloat(湿);
await WriteMultipleRegistersAsync(SlaveId, 158, tmp, ct);
}
public async Task (float , CancellationToken ct = default)
{
var tmp = ConvertFromFloat();
await WriteMultipleRegistersAsync(SlaveId, 162, tmp, ct);
}
public async Task 1(float , CancellationToken ct = default)
{
var tmp = ConvertFromFloat();
await WriteMultipleRegistersAsync(SlaveId, 164, tmp, ct);
}
public async Task 2(float , CancellationToken ct = default)
{
var tmp = ConvertFromFloat();
await WriteMultipleRegistersAsync(SlaveId, 166, tmp, ct);
}
public async Task 3(float , CancellationToken ct = default)
{
var tmp = ConvertFromFloat();
await WriteMultipleRegistersAsync(SlaveId, 168, tmp, ct);
}
public async Task 使(CancellationToken ct = default)
{
await WriteSingleRegisterAsync(SlaveId, 1181, 0, ct);
}
public async Task 使(CancellationToken ct = default)
{
await WriteSingleRegisterAsync(SlaveId, 1181, 1, ct);
}
public async Task 使(CancellationToken ct = default)
{
await WriteSingleRegisterAsync(SlaveId, 1182, 0, ct);
}
public async Task 使(CancellationToken ct = default)
{
await WriteSingleRegisterAsync(SlaveId, 1182, 1, ct);
}
#endregion
#region
private float ConvertToFloat(ushort[] values)
{
if (values == null || values.Length < 2) return 0f;
byte[] bytes = new byte[4];
bytes[3] = (byte)(values[0] >> 8);
bytes[2] = (byte)(values[0] & 0xFF);
bytes[1] = (byte)(values[1] >> 8);
bytes[0] = (byte)(values[1] & 0xFF);
return BitConverter.ToSingle(bytes, 0);
}
private ushort[] ConvertFromFloat(float value)
{
byte[] bytes = BitConverter.GetBytes(value);
ushort[] result = new ushort[2];
result[0] = (ushort)((bytes[3] << 8) | bytes[2]);
result[1] = (ushort)((bytes[1] << 8) | bytes[0]);
return result;
}
#endregion
}
}