zenghongyao 4f1814b8df 协议解析优化
策略模式回调采用Action方式灵活处理
2025-04-29 09:16:48 +08:00

133 lines
5.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H;
using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H
{
/// <summary>
/// 5.3.3.1 F1登录
/// </summary>
public class AFN2_F1_Analysis : IAnalysisStrategy<TB3761>
{
private readonly ILogger<AFN2_F1_Analysis> _logger;
public AFN2_F1_Analysis(ILogger<AFN2_F1_Analysis> logger)
{
_logger = logger;
}
public Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
{
try
{
ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.A.Code);
UnitDataAnalysis<string> dto = new UnitDataAnalysis<string>
{
Code = input.A.Code,
AFN = input.AFN_FC.AFN,
Fn = input.DT.Fn,
Pn = input.DA.Pn,
Data = $"登录帧"
};
result?.Invoke(dto);
return Task.FromResult(true);
}
catch (Exception ex)
{
_logger.LogError(ex, $"02_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}");
}
return Task.FromResult(false);
}
//public Task ExecuteAsync<TResult>(TB3761 input, Action<TResult>? callback = null) where TResult : UnitDataAnalysis<TResult>
//{
// try
// {
// ArgumentNullException.ThrowIfNull(input);
// ArgumentNullException.ThrowIfNull(input.A.Code);
// UnitDataAnalysis<string> dto = new UnitDataAnalysis<string>
// {
// Code = input.A.Code,
// AFN = input.AFN_FC.AFN,
// Fn = input.DT.Fn,
// Pn = input.DA.Pn,
// Data = $"登录帧"
// };
// callback?.Invoke(dto);
// return Task.FromResult(dto);
// }
// catch (Exception ex)
// {
// _logger.LogError(ex, $"02_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}");
// return null;
// }
//}
//public Task<UnitDataAnalysis<string>> ExecuteAsync(TB3761 input, Action<UnitDataAnalysis<string>>? callback = null)
//{
// try
// {
// ArgumentNullException.ThrowIfNull(input);
// ArgumentNullException.ThrowIfNull(input.A.Code);
// UnitDataAnalysis<string> dto = new UnitDataAnalysis<string>
// {
// Code = input.A.Code,
// AFN = input.AFN_FC.AFN,
// Fn = input.DT.Fn,
// Pn = input.DA.Pn,
// Data = $"登录帧"
// };
// callback?.Invoke(dto);
// return Task.FromResult(dto);
// }
// catch (Exception ex)
// {
// _logger.LogError(ex, $"02_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}");
// return null;
// }
//}
//public Task ExecuteAsync<TResult>(TB3761 input, Action<TResult>? callback = null)
//{
// try
// {
// ArgumentNullException.ThrowIfNull(input);
// ArgumentNullException.ThrowIfNull(input.A.Code);
// var dto = Activator.CreateInstance<TResult>();
// dto.Code = input.A.Code;
// dto.AFN = input.AFN_FC.AFN;
// dto.Fn = input.DT.Fn;
// dto.Pn = input.DA.Pn;
// dto.Data = "登录帧";
// //UnitDataAnalysis<string> dto = new UnitDataAnalysis<string>
// //{
// // Code = input.A.Code,
// // AFN = input.AFN_FC.AFN,
// // Fn = input.DT.Fn,
// // Pn = input.DA.Pn,
// // Data = $"登录帧"
// //};
// callback?.Invoke(dto);
// return Task.FromResult(dto);
// }
// catch (Exception ex)
// {
// _logger.LogError(ex, $"02_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}");
// return null;
// }
//}
}
}