2025-04-24 19:31:28 +08:00
|
|
|
|
using JiShe.CollectBus.Common.Extensions;
|
2025-04-25 14:37:35 +08:00
|
|
|
|
using JiShe.CollectBus.Protocol.Interfaces;
|
2025-04-24 19:31:28 +08:00
|
|
|
|
|
2025-04-27 09:16:37 +08:00
|
|
|
|
namespace JiShe.CollectBus.Protocol.T37612012.Appendix
|
2025-04-24 19:31:28 +08:00
|
|
|
|
{
|
2025-04-29 09:16:48 +08:00
|
|
|
|
public class Appendix_A25 : IAnalysisStrategy<List<string>>
|
2025-04-24 19:31:28 +08:00
|
|
|
|
{
|
2025-04-29 09:16:48 +08:00
|
|
|
|
public async Task<bool> ExecuteAsync(List<string> data, Action<dynamic>? result = null)
|
2025-04-24 19:31:28 +08:00
|
|
|
|
{
|
|
|
|
|
|
decimal value = 0.000M;
|
|
|
|
|
|
string binString = string.Empty;
|
|
|
|
|
|
if (data[0].Check3761Byte())
|
|
|
|
|
|
{
|
|
|
|
|
|
binString = data[0].HexTo4BinZero();
|
|
|
|
|
|
value += (binString.Substring(0, 4).BinToDec() / 100M) + (binString.Substring(4, 4).BinToDec() / 1000M);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (data[1].Check3761Byte())
|
|
|
|
|
|
{
|
|
|
|
|
|
binString = data[1].HexTo4BinZero();
|
|
|
|
|
|
value += (binString.Substring(0, 4).BinToDec() / 1M) + (binString.Substring(4, 4).BinToDec() / 10M);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (data[2].Check3761Byte())
|
|
|
|
|
|
{
|
|
|
|
|
|
binString = data[2].HexTo4BinZero();
|
|
|
|
|
|
value += (binString.Substring(1, 3).BinToDec() * 100M) + (binString.Substring(4, 4).BinToDec() * 10M);
|
|
|
|
|
|
int sign = Convert.ToInt32(binString.Substring(0, 1));//正负值标记
|
|
|
|
|
|
value = sign == 0 ? value * 1 : value * -1;
|
|
|
|
|
|
}
|
2025-04-29 09:16:48 +08:00
|
|
|
|
result?.Invoke(value);
|
|
|
|
|
|
return await Task.FromResult(true);
|
2025-04-24 19:31:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|