diff --git a/protocols/JiShe.CollectBus.Protocol.T1882018/SendData/Telemetry1882018PacketBuilder.cs b/protocols/JiShe.CollectBus.Protocol.T1882018/SendData/Telemetry1882018PacketBuilder.cs index f9dab9a..eaa9ca8 100644 --- a/protocols/JiShe.CollectBus.Protocol.T1882018/SendData/Telemetry1882018PacketBuilder.cs +++ b/protocols/JiShe.CollectBus.Protocol.T1882018/SendData/Telemetry1882018PacketBuilder.cs @@ -8,7 +8,7 @@ using System.Reflection; namespace JiShe.CollectBus.Protocol.SendData { /// - /// 构建645-2007下发报文 + /// 构建188-2018下发报文 /// public static class Telemetry1882018PacketBuilder { @@ -30,7 +30,7 @@ namespace JiShe.CollectBus.Protocol.SendData var methods = typeof(Telemetry1882018PacketBuilder).GetMethods(BindingFlags.Static | BindingFlags.Public); foreach (var method in methods) { - if (method.Name.StartsWith("C") && method.Name.EndsWith("_Send")) + if (method.Name.StartsWith("CTR") && method.Name.EndsWith("_Send")) { string code = method.Name; var delegateInstance = (T1882018Delegate)Delegate.CreateDelegate(typeof(T1882018Delegate), method); @@ -39,68 +39,41 @@ namespace JiShe.CollectBus.Protocol.SendData } } - #region 1CH 跳合闸、报警、保电 + #region 读数据 /// - /// 1CH 跳合闸 + /// 读取计量数据 /// /// /// - public static Telemetry1882018PacketResponse C1C_01_Send(Telemetry1882018PacketRequest request) + public static Telemetry1882018PacketResponse CTR_01_Send(Telemetry1882018PacketRequest request) { var itemCodeArr = request.ItemCode.Split('_'); - var c_data = itemCodeArr[0]; - var n_data = itemCodeArr[1]; - string password = request.Password; - string pwdLevel = "02"; + var c_data = itemCodeArr[0];//01 + var d_data = itemCodeArr[1];//91 或者 90 + var dataUnit = new List() { "1F", d_data, "00" }; + var dataList = Build188SendData.Build188SendCommand(request.MeterAddress, c_data, dataUnit); - if (!string.IsNullOrWhiteSpace(password) && password.Contains("|")) - { - var sp = password.Split('|'); - password = sp[0]; - pwdLevel = sp[1]; - } - - var strDate = DateTime.Now.AddYears(3).ToString("000012ddMMyy").StrAddSpan();//命令有效截止时间 - - var strP = password.StrAddSpan().StrReverseOrder(); - var strSJY = " " + pwdLevel + " " + strP + " 01 00 00 00 " + n_data + " 00 " + strDate; - var dataUnit = strSJY.Replace(" ", "").StringToPairs(); - - var dataList = Build645SendData.Build645SendCommand(request.MeterAddress, c_data, dataUnit); return new Telemetry1882018PacketResponse() { Data = dataList }; } + #endregion - + #region 写数据 /// - /// 1CH 保电 + /// 阀控 /// /// /// - public static Telemetry1882018PacketResponse C1C_03_Send(Telemetry1882018PacketRequest request) + public static Telemetry1882018PacketResponse CTR_04_Send(Telemetry1882018PacketRequest request) { var itemCodeArr = request.ItemCode.Split('_'); - var c_data = itemCodeArr[0]; - var n_data = itemCodeArr[1]; - string password = request.Password; + var c_data = itemCodeArr[0];//01 + var d_data = itemCodeArr[1];//55 或者 99 + var dataUnit = new List() { "A0", "17", "00", d_data }; + var dataList = Build188SendData.Build188SendCommand(request.MeterAddress, c_data, dataUnit); - if (!string.IsNullOrWhiteSpace(password) && password.Contains("|")) - { - var sp = password.Split('|'); - password = sp[0]; - } - - var strDate = (n_data + DateTime.Now.AddDays(1).ToString("00000012ddMMyy")).StrAddSpan(); - - var strP = password.StrAddSpan().StrReverseOrder(); - - var strSJY = " 02 " + strP + " 01 00 00 00 " + strDate; - - var dataUnit = strSJY.Replace(" ", "").StringToPairs(); - - var dataList = Build645SendData.Build645SendCommand(request.MeterAddress, c_data, dataUnit); return new Telemetry1882018PacketResponse() { Data = dataList }; } - #endregion + #endregion } } diff --git a/protocols/JiShe.CollectBus.Protocol.T1882018/T1882018ProtocolPlugin.cs b/protocols/JiShe.CollectBus.Protocol.T1882018/T1882018ProtocolPlugin.cs index ad6e15c..de7b44a 100644 --- a/protocols/JiShe.CollectBus.Protocol.T1882018/T1882018ProtocolPlugin.cs +++ b/protocols/JiShe.CollectBus.Protocol.T1882018/T1882018ProtocolPlugin.cs @@ -19,15 +19,13 @@ using Volo.Abp.Domain.Repositories; namespace JiShe.CollectBus.Protocol { + /// + /// T1882018协议插件 + /// public class T1882018ProtocolPlugin : T37612012ProtocolPlugin { private readonly ILogger _logger; - private readonly IProducerService _producerService; - - private readonly IRepository _deviceRepository; - private readonly ITcpService _tcpService; - public readonly Dictionary T188ControlHandlers; /// @@ -37,10 +35,6 @@ namespace JiShe.CollectBus.Protocol public T1882018ProtocolPlugin(IServiceProvider serviceProvider, ILogger logger, ITcpService tcpService) : base(serviceProvider, logger, tcpService) { _logger = logger; - //_logger = serviceProvider.GetRequiredService>(); - _producerService = serviceProvider.GetRequiredService(); - _deviceRepository = serviceProvider.GetRequiredService>(); - _tcpService = tcpService; T188ControlHandlers = Telemetry1882018PacketBuilder.T1882018ControlHandlers; } @@ -92,22 +86,24 @@ namespace JiShe.CollectBus.Protocol { if (request == null) { - throw new Exception($"{nameof(T1882018ProtocolPlugin)} 报文构建失败,参数为空"); + _logger.LogError($"{nameof(T1882018ProtocolPlugin)} 报文构建失败,参数为空"); + return new ProtocolBuildResponse(); } var itemCodeArr = request.ItemCode.Split('_'); var aFNStr = itemCodeArr[0]; var aFN = (AFN)aFNStr.HexToDec(); var fn = int.Parse(itemCodeArr[1]); + Telemetry3761PacketResponse builderResponse = null; List dataUnit = new List(); - //数据转发场景 10H_F1_1CH + //数据转发场景 10H_F1 if (aFNStr == "10" && request.SubProtocolRequest != null && string.IsNullOrWhiteSpace(request.SubProtocolRequest.ItemCode) == false) { - var t645PacketHandlerName = $"C{request.SubProtocolRequest.ItemCode}_Send"; + var t188PacketHandlerName = $"{T1882018PacketItemCodeConst.BasicT1882018}_{request.SubProtocolRequest.ItemCode}_Send"; Telemetry1882018PacketResponse t645PacketResponse = null; - if (T188ControlHandlers != null && T188ControlHandlers.TryGetValue(t645PacketHandlerName + if (T188ControlHandlers != null && T188ControlHandlers.TryGetValue(t188PacketHandlerName , out var t645PacketHandler)) { t645PacketResponse = t645PacketHandler(new Telemetry1882018PacketRequest() diff --git a/protocols/JiShe.CollectBus.Protocol.T6452007/T6452007ProtocolPlugin.cs b/protocols/JiShe.CollectBus.Protocol.T6452007/T6452007ProtocolPlugin.cs index 8d04a87..fad7ed0 100644 --- a/protocols/JiShe.CollectBus.Protocol.T6452007/T6452007ProtocolPlugin.cs +++ b/protocols/JiShe.CollectBus.Protocol.T6452007/T6452007ProtocolPlugin.cs @@ -15,30 +15,22 @@ using Volo.Abp.Domain.Repositories; namespace JiShe.CollectBus.Protocol { - public class T6452007ProtocolPlugin : ProtocolPlugin + /// + /// T6452007协议插件 + /// + public class T6452007ProtocolPlugin : T37612012ProtocolPlugin { private readonly ILogger _logger; - - private readonly IProducerService _producerService; - - private readonly IRepository _deviceRepository; - private readonly ITcpService _tcpService; - - public readonly Dictionary T3761AFNHandlers; + public readonly Dictionary T645ControlHandlers; /// /// Initializes a new instance of the class. /// /// The service provider. - public T6452007ProtocolPlugin(IServiceProvider serviceProvider, ILogger logger, ITcpService tcpService) : base(serviceProvider, logger) + public T6452007ProtocolPlugin(IServiceProvider serviceProvider, ILogger logger, ITcpService tcpService) : base(serviceProvider, logger, tcpService) { _logger = logger; - //_logger = serviceProvider.GetRequiredService>(); - _producerService = serviceProvider.GetRequiredService(); - _deviceRepository = serviceProvider.GetRequiredService>(); - _tcpService = tcpService; - T3761AFNHandlers = Telemetry3761PacketBuilder.T3761AFNHandlers; T645ControlHandlers = Telemetry6452007PacketBuilder.T645ControlHandlers; } @@ -90,7 +82,8 @@ namespace JiShe.CollectBus.Protocol { if (request == null) { - throw new Exception($"{nameof(T6452007ProtocolPlugin)} 报文构建失败,参数为空"); + _logger.LogError($"{nameof(ProtocolBuildResponse)} 报文构建失败,参数为空"); + return new ProtocolBuildResponse(); } var itemCodeArr = request.ItemCode.Split('_'); var aFNStr = itemCodeArr[0]; @@ -123,7 +116,7 @@ namespace JiShe.CollectBus.Protocol } string afnMethonCode = $"AFN{aFNStr}_Fn_Send"; - if (T3761AFNHandlers != null && T3761AFNHandlers.TryGetValue(afnMethonCode + if (base.T3761AFNHandlers != null && base.T3761AFNHandlers.TryGetValue(afnMethonCode , out var handler)) { builderResponse = handler(new Telemetry3761PacketRequest() diff --git a/services/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs b/services/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs index 0cb8a2c..2b0df9e 100644 --- a/services/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs +++ b/services/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs @@ -756,7 +756,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading { MeterAddress = ammeterInfo.AmmerterAddress, Password = ammeterInfo.Password, - ItemCode = T645PacketItemCodeConst.C08, + ItemCode = T6452007PacketItemCodeConst.C08, } }); diff --git a/services/JiShe.CollectBus.Application/ScheduledMeterReading/EnergySystemScheduledMeterReadingService.cs b/services/JiShe.CollectBus.Application/ScheduledMeterReading/EnergySystemScheduledMeterReadingService.cs index 9a55f27..da0854d 100644 --- a/services/JiShe.CollectBus.Application/ScheduledMeterReading/EnergySystemScheduledMeterReadingService.cs +++ b/services/JiShe.CollectBus.Application/ScheduledMeterReading/EnergySystemScheduledMeterReadingService.cs @@ -233,17 +233,17 @@ namespace JiShe.CollectBus.ScheduledMeterReading { ammeterInfo.TripState = 0; tripStateResult = true; - subItemCode = T645PacketItemCodeConst.C1C01C; + subItemCode = T6452007PacketItemCodeConst.C1C01C; if (ammeterInfo.TypeName != 1) { - subItemCode = T645PacketItemCodeConst.C1C01B; + subItemCode = T6452007PacketItemCodeConst.C1C01B; } } else if (settingInfo.TripType.Equals("off")) { ammeterInfo.TripState = 1; tripStateResult = false; - subItemCode = T645PacketItemCodeConst.C1C01A; + subItemCode = T6452007PacketItemCodeConst.C1C01A; } else { diff --git a/shared/JiShe.CollectBus.Common/Consts/T1882018PacketItemCodeConst.cs b/shared/JiShe.CollectBus.Common/Consts/T1882018PacketItemCodeConst.cs index fccd0cf..a51f77f 100644 --- a/shared/JiShe.CollectBus.Common/Consts/T1882018PacketItemCodeConst.cs +++ b/shared/JiShe.CollectBus.Common/Consts/T1882018PacketItemCodeConst.cs @@ -12,50 +12,42 @@ namespace JiShe.CollectBus.Common.Consts public class T1882018PacketItemCodeConst { #region 下行报文编码 - #region 跳合闸、报警、保电 - /// - /// 跳闸 - /// - public const string C1C01A = "1C_1A"; /// - /// 单相合闸 + /// 基路径 /// - public const string C1C01B = "1C_1B"; + public const string BasicT1882018 = "CTR"; + + #region 读数据 + /// - /// 三相合闸 + /// 读取计量数据1 /// - public const string C1C01C = "1C_1C"; + public const string CTR0190 = $"01_90"; /// - /// 触发报警 + /// 读取计量数据2 /// - public const string C1C02A = "1C_2A"; + public const string CTR0191 = $"01_91"; - /// - /// 报警解除 - /// - public const string C1C02B = "1C_2B"; - - /// - /// 保电开始 - /// - public const string C1C03A = "1C_3A"; - - /// - /// 保电结束 - /// - public const string C1C03B = "1C_3B"; #endregion - #region 广播校时 + #region 写数据 + + /// + /// 关阀 + /// + public const string CTR30455 = $"_04_55"; /// - /// 广播校时 + /// 开阀 /// - public const string C08 = "08"; + public const string CTR30499 = $"_04_99"; + + #endregion + #endregion } } diff --git a/shared/JiShe.CollectBus.Common/Consts/T645PacketItemCodeConst.cs b/shared/JiShe.CollectBus.Common/Consts/T6452007PacketItemCodeConst.cs similarity index 94% rename from shared/JiShe.CollectBus.Common/Consts/T645PacketItemCodeConst.cs rename to shared/JiShe.CollectBus.Common/Consts/T6452007PacketItemCodeConst.cs index 3b94e07..8a0834a 100644 --- a/shared/JiShe.CollectBus.Common/Consts/T645PacketItemCodeConst.cs +++ b/shared/JiShe.CollectBus.Common/Consts/T6452007PacketItemCodeConst.cs @@ -7,9 +7,9 @@ using System.Threading.Tasks; namespace JiShe.CollectBus.Common.Consts { /// - /// T645报文项编码 + /// T6452007报文项编码 /// - public class T645PacketItemCodeConst + public class T6452007PacketItemCodeConst { #region 下行报文编码 #region 跳合闸、报警、保电