优化代码
This commit is contained in:
parent
032c075f2f
commit
29560ad4ef
@ -77,7 +77,6 @@ namespace JiShe.CollectBus.Subscribers
|
||||
if (device!=null)
|
||||
{
|
||||
await _tcpService.SendAsync(device.ClientId, issuedEventMessage.Message);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -99,35 +98,30 @@ namespace JiShe.CollectBus.Subscribers
|
||||
[CapSubscribe(ProtocolConst.SubscriberReceivedHeartbeatEventName)]
|
||||
public async Task ReceivedHeartbeatEvent(MessageReceivedHeartbeat receivedHeartbeatMessage)
|
||||
{
|
||||
_logger.LogInformation("心跳消费队列开始处理");
|
||||
var protocolPlugin = _serviceProvider.GetKeyedService<IProtocolPlugin>("StandardProtocolPlugin");
|
||||
if (protocolPlugin == null)
|
||||
{
|
||||
_logger.LogError("【心跳消费队列开始处理】协议不存在!");
|
||||
_logger.LogError("协议不存在!");
|
||||
}
|
||||
else
|
||||
{
|
||||
await protocolPlugin.HeartbeatAsync(receivedHeartbeatMessage);
|
||||
await _messageReceivedHeartbeatEventRepository.InsertAsync(receivedHeartbeatMessage);
|
||||
|
||||
_logger.LogInformation($"心跳消费队列完成处理:{receivedHeartbeatMessage.MessageId}");
|
||||
}
|
||||
}
|
||||
|
||||
[CapSubscribe(ProtocolConst.SubscriberReceivedLoginEventName)]
|
||||
public async Task ReceivedLoginEvent(MessageReceivedLogin receivedLoginMessage)
|
||||
{
|
||||
_logger.LogInformation("登录消费队列开始处理");
|
||||
var protocolPlugin = _serviceProvider.GetKeyedService<IProtocolPlugin>("StandardProtocolPlugin");
|
||||
if (protocolPlugin == null)
|
||||
{
|
||||
_logger.LogError("【登录消费队列开始处理】协议不存在!");
|
||||
_logger.LogError("协议不存在!");
|
||||
}
|
||||
else
|
||||
{
|
||||
await protocolPlugin.LoginAsync(receivedLoginMessage);
|
||||
await _messageReceivedLoginEventRepository.InsertAsync(receivedLoginMessage);
|
||||
_logger.LogInformation("登录消费队列完成处理");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
using System.Globalization;
|
||||
using DotNetCore.CAP;
|
||||
using DotNetCore.CAP;
|
||||
using JiShe.CollectBus.Common.Enums;
|
||||
using JiShe.CollectBus.Common.Extensions;
|
||||
using JiShe.CollectBus.Common.Models;
|
||||
@ -153,55 +152,55 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
/// <returns></returns>
|
||||
public virtual List<AmmeterParameter> AnalyzeAmmeterParameterReadingDataAsync(MessageReceived messageReceived, Action<byte[]>? sendAction = null)
|
||||
{
|
||||
var hexDatas = GetHexDatas(messageReceived.MessageHexString);
|
||||
var hexData = GetHexData(messageReceived.MessageHexString);
|
||||
|
||||
var meterList = new List<AmmeterParameter>();
|
||||
var count = (hexDatas[1] + hexDatas[0]).HexToDec();
|
||||
var count = (hexData[1] + hexData[0]).HexToDec();
|
||||
//if (2 + count * 27 != hexDatas.Count - pWLen - tPLen - 2)
|
||||
// return;
|
||||
var index = 2;//数量
|
||||
for (int i = 1; i <= count; i++)
|
||||
{
|
||||
var meterNumber = $"{hexDatas[index + 1]}{hexDatas[index]}".HexToDec();
|
||||
var meterNumber = $"{hexData[index + 1]}{hexData[index]}".HexToDec();
|
||||
index += 2;
|
||||
|
||||
var pn = $"{hexDatas[index + 1]}{hexDatas[index]}".HexToDec();
|
||||
var pn = $"{hexData[index + 1]}{hexData[index]}".HexToDec();
|
||||
index += 2;
|
||||
|
||||
var baudRateAndPortBin = hexDatas[index].HexToBin().PadLeft(8, '0');
|
||||
var baudRateAndPortBin = hexData[index].HexToBin().PadLeft(8, '0');
|
||||
var baudRate = baudRateAndPortBin.Substring(0, 3).BinToDec();
|
||||
var port = baudRateAndPortBin.Substring(3, 5).BinToDec();
|
||||
index += 1;
|
||||
|
||||
var protocolType = (CommunicationProtocolType)hexDatas[index].HexToDec();
|
||||
var protocolType = (CommunicationProtocolType)hexData[index].HexToDec();
|
||||
index += 1;
|
||||
|
||||
var addressHexList = hexDatas.Skip(index).Take(6).ToList();
|
||||
var addressHexList = hexData.Skip(index).Take(6).ToList();
|
||||
addressHexList.Reverse();
|
||||
var address = string.Join("", addressHexList);
|
||||
index += 6;
|
||||
|
||||
var pwdHexList = hexDatas.Skip(index).Take(6).ToList();
|
||||
var pwdHexList = hexData.Skip(index).Take(6).ToList();
|
||||
pwdHexList.Reverse();
|
||||
var password = string.Join("", pwdHexList.Take(3).ToList());
|
||||
index += 6;
|
||||
|
||||
var rateNumberBin = hexDatas[index].HexToBin().PadLeft(8, '0');
|
||||
var rateNumberBin = hexData[index].HexToBin().PadLeft(8, '0');
|
||||
var rateNumber = rateNumberBin.Substring(4).BinToDec();
|
||||
index += 1;
|
||||
|
||||
var intBitAndDecBitNumberBin = hexDatas[index].HexToBin().PadLeft(8, '0');
|
||||
var intBitAndDecBitNumberBin = hexData[index].HexToBin().PadLeft(8, '0');
|
||||
var intBitNumber = intBitAndDecBitNumberBin.Substring(4, 2).BinToDec() + 4;
|
||||
var decBitNumber = intBitAndDecBitNumberBin.Substring(6, 2).BinToDec() + 1;
|
||||
index += 1;
|
||||
|
||||
// hexDatas.GetRange()
|
||||
var collectorAddressHexList = hexDatas.Skip(index).Take(6).ToList();
|
||||
var collectorAddressHexList = hexData.Skip(index).Take(6).ToList();
|
||||
collectorAddressHexList.Reverse();
|
||||
var collectorAddress = string.Join("", collectorAddressHexList);
|
||||
index += 6;
|
||||
|
||||
var userClassNumberBin = hexDatas[index].HexToBin().PadLeft(8, '0');
|
||||
var userClassNumberBin = hexData[index].HexToBin().PadLeft(8, '0');
|
||||
var userClass = userClassNumberBin.Substring(0, 4).BinToDec();
|
||||
var userSubClass = userClassNumberBin.Substring(4, 4).BinToDec();
|
||||
index += 1;
|
||||
@ -234,24 +233,24 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
/// <returns></returns>
|
||||
public virtual CurrentPositiveActiveEnergyAnalyze AnalyzeActivePowerIndicationReadingDataAsync(MessageReceived messageReceived, Action<byte[]>? sendAction = null)
|
||||
{
|
||||
var hexDatas = GetHexDatas(messageReceived.MessageHexString);
|
||||
var hexData = GetHexData(messageReceived.MessageHexString);
|
||||
|
||||
var minute = Convert.ToInt32(hexDatas[0]); // 获取当前分钟数
|
||||
var hour = Convert.ToInt32(hexDatas[1]); // 获取当前小时数
|
||||
var day = Convert.ToInt32(hexDatas[2]); // 获取当前日期的日数
|
||||
var month = Convert.ToInt32(hexDatas[3]); // 获取当前月份
|
||||
var year = Convert.ToInt32(hexDatas[4]); // 获取当前日期的年份
|
||||
var minute = Convert.ToInt32(hexData[0]); // 获取当前分钟数
|
||||
var hour = Convert.ToInt32(hexData[1]); // 获取当前小时数
|
||||
var day = Convert.ToInt32(hexData[2]); // 获取当前日期的日数
|
||||
var month = Convert.ToInt32(hexData[3]); // 获取当前月份
|
||||
var year = Convert.ToInt32(hexData[4]); // 获取当前日期的年份
|
||||
var dateTime = new DateTime(year, month, day, hour, minute, 0);
|
||||
// 转换为本地时间
|
||||
var localDateTime = dateTime.ToLocalTime();
|
||||
|
||||
var rateNumber = Convert.ToInt32(hexDatas[5]);
|
||||
var kwhTotal = hexDatas.Skip(5).Take(5).ToList();
|
||||
var rateNumber = Convert.ToInt32(hexData[5]);
|
||||
var kwhTotal = hexData.Skip(5).Take(5).ToList();
|
||||
var kwhList = new List<PositiveActiveEnergyItem>();
|
||||
var index = 11;
|
||||
for (int i = 0; i < rateNumber; i++)
|
||||
{
|
||||
var kwhHexList = hexDatas.Skip(index).Take(5).ToList();
|
||||
var kwhHexList = hexData.Skip(index).Take(5).ToList();
|
||||
kwhHexList.Reverse();
|
||||
var integerStr = $"{kwhHexList.Take(0)}{kwhHexList.Take(1)}{kwhHexList.Take(2)}";
|
||||
var decimalValStr = $"{kwhHexList[3]}{kwhHexList[4]}";
|
||||
@ -280,19 +279,19 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
/// <returns></returns>
|
||||
public virtual void AnalyzeDailyFrozenReadingDataAsync(MessageReceived messageReceived, Action<byte[]>? sendAction = null)
|
||||
{
|
||||
var hexDatas = GetHexDatas(messageReceived.MessageHexString);
|
||||
var hexData = GetHexData(messageReceived.MessageHexString);
|
||||
//附录A.20 日月年
|
||||
var td_dHex = hexDatas.Take(3).ToList();
|
||||
var td_dHex = hexData.Take(3).ToList();
|
||||
//附录A.15 分时日月年
|
||||
var readingTimeHex = hexDatas.Skip(3).Take(5).ToList();
|
||||
var rateNumberHex = hexDatas.Skip(8).Take(1).FirstOrDefault().HexToDec();
|
||||
var readingTimeHex = hexData.Skip(3).Take(5).ToList();
|
||||
var rateNumberHex = hexData.Skip(8).Take(1).FirstOrDefault().HexToDec();
|
||||
|
||||
var datas = new List<decimal>();
|
||||
//附录A.14 kWh 5字节
|
||||
for (int i = 0; i < rateNumberHex; i++)
|
||||
{
|
||||
var skipCount = 9 + i * 5;
|
||||
var dataHexs = hexDatas.Skip(skipCount).Take(5).ToList();
|
||||
var dataHexs = hexData.Skip(skipCount).Take(5).ToList();
|
||||
var data = AnalyzeDataAccordingToA14(dataHexs[0], dataHexs[1], dataHexs[2], dataHexs[3], dataHexs[4]);
|
||||
datas.Add(data);
|
||||
}
|
||||
@ -344,83 +343,83 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
/// <returns></returns>//F25ReadingAnalyze
|
||||
public virtual Analyze3761Data AnalyzeF25ReadingDataAsync(MessageReceived messageReceived, Action<byte[]>? sendAction = null)
|
||||
{
|
||||
var hexDatas = GetHexDatas(messageReceived.MessageHexString);
|
||||
var hexData = GetHexData(messageReceived.MessageHexString);
|
||||
//A.15 分时日月年
|
||||
var readingTimeHex = hexDatas.Take(5).ToList();
|
||||
var readingTimeHex = hexData.Take(5).ToList();
|
||||
var readingTime = AnalyzeDataAccordingToA15(readingTimeHex[0], readingTimeHex[1], readingTimeHex[2], readingTimeHex[3], readingTimeHex[4]);
|
||||
|
||||
//A.9 kW
|
||||
var crntTotalActivePowerHexs = hexDatas.Skip((int)F25DataItemEnum.CrntTotalActivePower).Take(3).ToList();
|
||||
var crntTotalActivePowerHexs = hexData.Skip((int)F25DataItemEnum.CrntTotalActivePower).Take(3).ToList();
|
||||
var crntTotalActivePower = AnalyzeDataAccordingToA09(crntTotalActivePowerHexs[0], crntTotalActivePowerHexs[1], crntTotalActivePowerHexs[2]);
|
||||
|
||||
var crntActivePowerOfAHexs = hexDatas.Skip((int)F25DataItemEnum.CrntActivePowerOfA).Take(3).ToList();
|
||||
var crntActivePowerOfAHexs = hexData.Skip((int)F25DataItemEnum.CrntActivePowerOfA).Take(3).ToList();
|
||||
var crntActivePowerOfA = AnalyzeDataAccordingToA09(crntActivePowerOfAHexs[0], crntActivePowerOfAHexs[1], crntActivePowerOfAHexs[2]);
|
||||
|
||||
var crntActivePowerOfBHexs = hexDatas.Skip((int)F25DataItemEnum.CrntActivePowerOfB).Take(3).ToList();
|
||||
var crntActivePowerOfBHexs = hexData.Skip((int)F25DataItemEnum.CrntActivePowerOfB).Take(3).ToList();
|
||||
var crntActivePowerOfB = AnalyzeDataAccordingToA09(crntActivePowerOfBHexs[0], crntActivePowerOfBHexs[1], crntActivePowerOfBHexs[2]);
|
||||
|
||||
var crntActivePowerOfCHexs = hexDatas.Skip((int)F25DataItemEnum.CrntActivePowerOfC).Take(3).ToList();
|
||||
var crntActivePowerOfCHexs = hexData.Skip((int)F25DataItemEnum.CrntActivePowerOfC).Take(3).ToList();
|
||||
var crntActivePowerOfC = AnalyzeDataAccordingToA09(crntActivePowerOfCHexs[0], crntActivePowerOfCHexs[1], crntActivePowerOfCHexs[2]);
|
||||
|
||||
var crntTotalReactivePowerHexs = hexDatas.Skip((int)F25DataItemEnum.CrntTotalReactivePower).Take(3).ToList();
|
||||
var crntTotalReactivePowerHexs = hexData.Skip((int)F25DataItemEnum.CrntTotalReactivePower).Take(3).ToList();
|
||||
var crntTotalReactivePower = AnalyzeDataAccordingToA09(crntTotalReactivePowerHexs[0], crntTotalReactivePowerHexs[1], crntTotalReactivePowerHexs[2]);
|
||||
|
||||
var crntReactivePowerOfAHexs = hexDatas.Skip((int)F25DataItemEnum.CrntReactivePowerOfA).Take(3).ToList();
|
||||
var crntReactivePowerOfAHexs = hexData.Skip((int)F25DataItemEnum.CrntReactivePowerOfA).Take(3).ToList();
|
||||
var crntReactivePowerOfA = AnalyzeDataAccordingToA09(crntReactivePowerOfAHexs[0], crntReactivePowerOfAHexs[1], crntReactivePowerOfAHexs[2]);
|
||||
|
||||
var crntReactivePowerOfBHexs = hexDatas.Skip((int)F25DataItemEnum.CrntReactivePowerOfB).Take(3).ToList();
|
||||
var crntReactivePowerOfBHexs = hexData.Skip((int)F25DataItemEnum.CrntReactivePowerOfB).Take(3).ToList();
|
||||
var crntReactivePowerOfB = AnalyzeDataAccordingToA09(crntReactivePowerOfBHexs[0], crntReactivePowerOfBHexs[1], crntReactivePowerOfBHexs[2]);
|
||||
|
||||
var crntReactivePowerOfCHexs = hexDatas.Skip((int)F25DataItemEnum.CrntReactivePowerOfC).Take(2).ToList();
|
||||
var crntReactivePowerOfCHexs = hexData.Skip((int)F25DataItemEnum.CrntReactivePowerOfC).Take(2).ToList();
|
||||
var crntReactivePowerOfC = AnalyzeDataAccordingToA09(crntReactivePowerOfCHexs[0], crntReactivePowerOfCHexs[1], crntReactivePowerOfCHexs[2]);
|
||||
|
||||
//A.5 %
|
||||
var crntTotalPowerFactorHexs = hexDatas.Skip((int)F25DataItemEnum.CrntTotalPowerFactor).Take(2).ToList();
|
||||
var crntTotalPowerFactorHexs = hexData.Skip((int)F25DataItemEnum.CrntTotalPowerFactor).Take(2).ToList();
|
||||
var crntTotalPowerFactor = AnalyzeDataAccordingToA05(crntTotalPowerFactorHexs[0], crntTotalPowerFactorHexs[1]);
|
||||
|
||||
var crntPowerFactorOfAHexs = hexDatas.Skip((int)F25DataItemEnum.CrntPowerFactorOfA).Take(2).ToList();
|
||||
var crntPowerFactorOfAHexs = hexData.Skip((int)F25DataItemEnum.CrntPowerFactorOfA).Take(2).ToList();
|
||||
var crntPowerFactorOfA = AnalyzeDataAccordingToA05(crntPowerFactorOfAHexs[0], crntPowerFactorOfAHexs[1]);
|
||||
|
||||
var crntPowerFactorOfBHexs = hexDatas.Skip((int)F25DataItemEnum.CrntPowerFactorOfB).Take(2).ToList();
|
||||
var crntPowerFactorOfBHexs = hexData.Skip((int)F25DataItemEnum.CrntPowerFactorOfB).Take(2).ToList();
|
||||
var crntPowerFactorOfB = AnalyzeDataAccordingToA05(crntPowerFactorOfBHexs[0], crntPowerFactorOfBHexs[1]);
|
||||
|
||||
var crntPowerFactorOfCHexs = hexDatas.Skip((int)F25DataItemEnum.CrntPowerFactorOfC).Take(2).ToList();
|
||||
var crntPowerFactorOfCHexs = hexData.Skip((int)F25DataItemEnum.CrntPowerFactorOfC).Take(2).ToList();
|
||||
var crntPowerFactorOfC = AnalyzeDataAccordingToA05(crntPowerFactorOfCHexs[0], crntPowerFactorOfCHexs[1]);
|
||||
|
||||
//A.7 V
|
||||
var crntVoltageOfAHexs = hexDatas.Skip((int)F25DataItemEnum.CrntVoltageOfA).Take(2).ToList();
|
||||
var crntVoltageOfAHexs = hexData.Skip((int)F25DataItemEnum.CrntVoltageOfA).Take(2).ToList();
|
||||
var crntVoltageOfA = AnalyzeDataAccordingToA07(crntVoltageOfAHexs[0], crntVoltageOfAHexs[1]);
|
||||
|
||||
var crntVoltageOfBHexs = hexDatas.Skip((int)F25DataItemEnum.CrntVoltageOfB).Take(2).ToList();
|
||||
var crntVoltageOfBHexs = hexData.Skip((int)F25DataItemEnum.CrntVoltageOfB).Take(2).ToList();
|
||||
var crntVoltageOfB = AnalyzeDataAccordingToA07(crntVoltageOfBHexs[0], crntVoltageOfBHexs[1]);
|
||||
|
||||
var crntVoltageOfCHexs = hexDatas.Skip((int)F25DataItemEnum.CrntVoltageOfC).Take(2).ToList();
|
||||
var crntVoltageOfCHexs = hexData.Skip((int)F25DataItemEnum.CrntVoltageOfC).Take(2).ToList();
|
||||
var crntVoltageOfC = AnalyzeDataAccordingToA07(crntVoltageOfCHexs[0], crntVoltageOfCHexs[1]);
|
||||
|
||||
//A.25 A
|
||||
var crntCurrentOfAHexs = hexDatas.Skip((int)F25DataItemEnum.CrntCurrentOfA).Take(3).ToList();
|
||||
var crntCurrentOfAHexs = hexData.Skip((int)F25DataItemEnum.CrntCurrentOfA).Take(3).ToList();
|
||||
var crntCurrentOfA = AnalyzeDataAccordingToA25(crntCurrentOfAHexs[0], crntCurrentOfAHexs[1], crntCurrentOfAHexs[2]);
|
||||
|
||||
var crntCurrentOfBHexs = hexDatas.Skip((int)F25DataItemEnum.CrntCurrentOfB).Take(3).ToList();
|
||||
var crntCurrentOfBHexs = hexData.Skip((int)F25DataItemEnum.CrntCurrentOfB).Take(3).ToList();
|
||||
var crntCurrentOfB = AnalyzeDataAccordingToA25(crntCurrentOfBHexs[0], crntCurrentOfBHexs[1], crntCurrentOfBHexs[2]);
|
||||
|
||||
var crntCurrentOfCHexs = hexDatas.Skip((int)F25DataItemEnum.CrntCurrentOfC).Take(3).ToList();
|
||||
var crntCurrentOfCHexs = hexData.Skip((int)F25DataItemEnum.CrntCurrentOfC).Take(3).ToList();
|
||||
var crntCurrentOfC = AnalyzeDataAccordingToA25(crntCurrentOfCHexs[0], crntCurrentOfCHexs[1], crntCurrentOfCHexs[2]);
|
||||
|
||||
var crntZeroSequenceCurrentHexs = hexDatas.Skip((int)F25DataItemEnum.CrntZeroSequenceCurrent).Take(3).ToList();
|
||||
var crntZeroSequenceCurrentHexs = hexData.Skip((int)F25DataItemEnum.CrntZeroSequenceCurrent).Take(3).ToList();
|
||||
var crntZeroSequenceCurrent = AnalyzeDataAccordingToA25(crntZeroSequenceCurrentHexs[0], crntZeroSequenceCurrentHexs[1], crntZeroSequenceCurrentHexs[2]);
|
||||
|
||||
//A.9 kVA
|
||||
var crntTotalApparentPowerHexs = hexDatas.Skip((int)F25DataItemEnum.CrntTotalApparentPower).Take(3).ToList();
|
||||
var crntTotalApparentPowerHexs = hexData.Skip((int)F25DataItemEnum.CrntTotalApparentPower).Take(3).ToList();
|
||||
var crntTotalApparentPower = AnalyzeDataAccordingToA09(crntTotalApparentPowerHexs[0], crntTotalApparentPowerHexs[1], crntTotalApparentPowerHexs[2]);
|
||||
|
||||
var crntApparentPowerOfAHexs = hexDatas.Skip((int)F25DataItemEnum.CrntApparentPowerOfA).Take(3).ToList();
|
||||
var crntApparentPowerOfAHexs = hexData.Skip((int)F25DataItemEnum.CrntApparentPowerOfA).Take(3).ToList();
|
||||
var crntApparentPowerOfA = AnalyzeDataAccordingToA09(crntApparentPowerOfAHexs[0], crntApparentPowerOfAHexs[1], crntApparentPowerOfAHexs[2]);
|
||||
|
||||
var crntApparentPowerOfBHexs = hexDatas.Skip((int)F25DataItemEnum.CrntApparentPowerOfB).Take(3).ToList();
|
||||
var crntApparentPowerOfBHexs = hexData.Skip((int)F25DataItemEnum.CrntApparentPowerOfB).Take(3).ToList();
|
||||
var crntApparentPowerOfB = AnalyzeDataAccordingToA09(crntApparentPowerOfBHexs[0], crntApparentPowerOfBHexs[1], crntApparentPowerOfBHexs[2]);
|
||||
|
||||
var crntApparentPowerOfCHexs = hexDatas.Skip((int)F25DataItemEnum.CrntApparentPowerOfC).Take(3).ToList();
|
||||
var crntApparentPowerOfCHexs = hexData.Skip((int)F25DataItemEnum.CrntApparentPowerOfC).Take(3).ToList();
|
||||
var crntApparentPowerOfC = AnalyzeDataAccordingToA09(crntApparentPowerOfCHexs[0], crntApparentPowerOfCHexs[1], crntApparentPowerOfCHexs[2]);
|
||||
|
||||
return new Analyze3761Data()
|
||||
@ -497,17 +496,17 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
/// <returns></returns>//TerminalVersionInfoAnalyze
|
||||
public virtual Analyze3761Data AnalyzeTerminalVersionInfoReadingDataAsync(MessageReceived messageReceived, Action<byte[]>? sendAction = null)
|
||||
{
|
||||
var hexDatas = GetHexDatas(messageReceived.MessageHexString);
|
||||
var hexData = GetHexData(messageReceived.MessageHexString);
|
||||
|
||||
var makerNo = string.Join("",hexDatas.Take(4).Select(s => (char)s.HexToDec()));//厂商代码
|
||||
var deviceNo = string.Join("", hexDatas.Skip((int)TerminalVersionInfoEnum.DeviceNo).Take(8).Select(s => (char)s.HexToDec()));//设备编号
|
||||
var softwareVersionNo = string.Join("", hexDatas.Skip((int)TerminalVersionInfoEnum.SoftwareVersionNo).Take(4).Select(s => (char)s.HexToDec()));//软件版本号
|
||||
var softwareReleaseDateList = hexDatas.Skip((int)TerminalVersionInfoEnum.SoftwareReleaseDate).Take(3).ToList();
|
||||
var makerNo = string.Join("",hexData.Take(4).Select(s => (char)s.HexToDec()));//厂商代码
|
||||
var deviceNo = string.Join("", hexData.Skip((int)TerminalVersionInfoEnum.DeviceNo).Take(8).Select(s => (char)s.HexToDec()));//设备编号
|
||||
var softwareVersionNo = string.Join("", hexData.Skip((int)TerminalVersionInfoEnum.SoftwareVersionNo).Take(4).Select(s => (char)s.HexToDec()));//软件版本号
|
||||
var softwareReleaseDateList = hexData.Skip((int)TerminalVersionInfoEnum.SoftwareReleaseDate).Take(3).ToList();
|
||||
var softwareReleaseDate = $"20{AnalyzeDataAccordingToA20(softwareReleaseDateList[0], softwareReleaseDateList[1], softwareReleaseDateList[2])}";//软件发布日期
|
||||
var capacityInformationCode = string.Join("", hexDatas.Skip((int)TerminalVersionInfoEnum.CapacityInformationCode).Take(11).Select(s => (char)s.HexToDec()));//容量信息码
|
||||
var protocolVersionNo = string.Join("", hexDatas.Skip((int)TerminalVersionInfoEnum.ProtocolVersionNo).Take(4).Select(s => (char)s.HexToDec()));//通信协议编号
|
||||
var hardwareVersionNo = string.Join("", hexDatas.Skip((int)TerminalVersionInfoEnum.HardwareVersionNo).Take(4).Select(s => (char)s.HexToDec()));//硬件版本号
|
||||
var hardwareReleaseDateList = hexDatas.Skip((int)TerminalVersionInfoEnum.HardwareReleaseDate).Take(3).ToList();
|
||||
var capacityInformationCode = string.Join("", hexData.Skip((int)TerminalVersionInfoEnum.CapacityInformationCode).Take(11).Select(s => (char)s.HexToDec()));//容量信息码
|
||||
var protocolVersionNo = string.Join("", hexData.Skip((int)TerminalVersionInfoEnum.ProtocolVersionNo).Take(4).Select(s => (char)s.HexToDec()));//通信协议编号
|
||||
var hardwareVersionNo = string.Join("", hexData.Skip((int)TerminalVersionInfoEnum.HardwareVersionNo).Take(4).Select(s => (char)s.HexToDec()));//硬件版本号
|
||||
var hardwareReleaseDateList = hexData.Skip((int)TerminalVersionInfoEnum.HardwareReleaseDate).Take(3).ToList();
|
||||
var hardwareReleaseDate = $"20{AnalyzeDataAccordingToA20(hardwareReleaseDateList[0], hardwareReleaseDateList[1], hardwareReleaseDateList[2])}";//软件发布日期
|
||||
|
||||
return new Analyze3761Data()
|
||||
@ -548,24 +547,24 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
/// <returns></returns>
|
||||
public virtual Analyze3761Data AnalyzeATypeOfDataItems49ReadingDataAsync(MessageReceived messageReceived, Action<byte[]>? sendAction = null)
|
||||
{
|
||||
var hexDatas = GetHexDatas(messageReceived.MessageHexString);
|
||||
var hexData = GetHexData(messageReceived.MessageHexString);
|
||||
|
||||
var uabUaList = hexDatas.Take(2).ToList();
|
||||
var uabUaList = hexData.Take(2).ToList();
|
||||
var uabUa = AnalyzeDataAccordingToA05(uabUaList[0], uabUaList[1]); //单位 度
|
||||
|
||||
var ubList = hexDatas.Skip((int)ATypeOfDataItems49.Ub).Take(2).ToList();
|
||||
var ubList = hexData.Skip((int)ATypeOfDataItems49.Ub).Take(2).ToList();
|
||||
var ub = AnalyzeDataAccordingToA05(ubList[0], ubList[1]);
|
||||
|
||||
var ucbUcList = hexDatas.Skip((int)ATypeOfDataItems49.UcbUc).Take(2).ToList();
|
||||
var ucbUcList = hexData.Skip((int)ATypeOfDataItems49.UcbUc).Take(2).ToList();
|
||||
var ucbUc = AnalyzeDataAccordingToA05(ucbUcList[0], ucbUcList[1]);
|
||||
|
||||
var iaList = hexDatas.Skip((int)ATypeOfDataItems49.Ia).Take(2).ToList();
|
||||
var iaList = hexData.Skip((int)ATypeOfDataItems49.Ia).Take(2).ToList();
|
||||
var ia = AnalyzeDataAccordingToA05(iaList[0], iaList[1]);
|
||||
|
||||
var ibList = hexDatas.Skip((int)ATypeOfDataItems49.Ib).Take(2).ToList();
|
||||
var ibList = hexData.Skip((int)ATypeOfDataItems49.Ib).Take(2).ToList();
|
||||
var ib = AnalyzeDataAccordingToA05(ibList[0], ibList[1]);
|
||||
|
||||
var icList = hexDatas.Skip((int)ATypeOfDataItems49.Ic).Take(2).ToList();
|
||||
var icList = hexData.Skip((int)ATypeOfDataItems49.Ic).Take(2).ToList();
|
||||
var ic = AnalyzeDataAccordingToA05(icList[0], icList[1]);
|
||||
|
||||
return new Analyze3761Data()
|
||||
@ -573,15 +572,15 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
AFN = 12,
|
||||
FN = 49,
|
||||
Text = "相位角",
|
||||
DataUpChilds = new List<Analyze3761DataUpChild>()
|
||||
{
|
||||
DataUpChilds =
|
||||
[
|
||||
new Analyze3761DataUpChild(1, "UabUa相位角", uabUa.ToString(), 1),
|
||||
new Analyze3761DataUpChild(2, "Ub相位角", ub.ToString(), 2),
|
||||
new Analyze3761DataUpChild(3, "UcbUc相位角", ucbUc.ToString(), 3),
|
||||
new Analyze3761DataUpChild(4, "Ia相位角", ia.ToString(), 4),
|
||||
new Analyze3761DataUpChild(5, "Ib相位角", ib.ToString(), 5),
|
||||
new Analyze3761DataUpChild(6,"Ic相位角",ic.ToString(),6),
|
||||
}
|
||||
new Analyze3761DataUpChild(6, "Ic相位角", ic.ToString(), 6)
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
@ -593,7 +592,7 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
|
||||
public virtual void AnalyzeTerminalTimeReadingDataAsync(MessageReceived messageReceived, Action<byte[]>? sendAction = null)
|
||||
{
|
||||
var hexDatas = GetHexDatas(messageReceived.MessageHexString);
|
||||
var hexDatas = GetHexData(messageReceived.MessageHexString);
|
||||
var time = Appendix.Appendix_A1(hexDatas.Take(6).ToList());
|
||||
}
|
||||
|
||||
@ -616,14 +615,14 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
var tb3761Fn = tb3761.FnList.FirstOrDefault(it => it.Fn == fn);
|
||||
if (tb3761Fn == null) return null;
|
||||
|
||||
var hexDatas = (List<string>)hexStringList.GetAnalyzeValue(CommandChunkEnum.Data);
|
||||
var analyzeValue = (List<string>)hexStringList.GetAnalyzeValue(CommandChunkEnum.Data);
|
||||
|
||||
var m = 0;
|
||||
var rateNumberUpSort = -1;
|
||||
var rateNumberUp = tb3761Fn.UpList.FirstOrDefault(it => it.Name.Contains("费率数M"));
|
||||
if (rateNumberUp != null)
|
||||
{
|
||||
var rateNumber = hexDatas.Skip(rateNumberUp.DataIndex).Take(rateNumberUp.DataCount).FirstOrDefault();
|
||||
var rateNumber = analyzeValue.Skip(rateNumberUp.DataIndex).Take(rateNumberUp.DataCount).FirstOrDefault();
|
||||
m = Convert.ToInt32(rateNumber);
|
||||
rateNumberUpSort = rateNumberUp.Sort;
|
||||
}
|
||||
@ -640,7 +639,7 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
dataIndex = sum1 + sum2;
|
||||
}
|
||||
|
||||
var value = AnalyzeDataAccordingDataType(hexDatas, dataIndex, up.DataCount, up.DataType);
|
||||
var value = AnalyzeDataAccordingDataType(analyzeValue, dataIndex, up.DataCount, up.DataType);
|
||||
if (value != null)
|
||||
{
|
||||
up.Value = value.ToString();
|
||||
@ -652,7 +651,7 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
{
|
||||
for (var j = 0; j < repeatCount; j++)
|
||||
{
|
||||
var val = AnalyzeDataAccordingDataType(hexDatas, dataIndex, upChild.DataCount, upChild.DataType);
|
||||
var val = AnalyzeDataAccordingDataType(analyzeValue, dataIndex, upChild.DataCount, upChild.DataType);
|
||||
if (val != null)
|
||||
{
|
||||
upChild.Name = string.Format(upChild.Name, j + 1);
|
||||
@ -688,11 +687,11 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
var tb3761Fn = tb3761.FnList.FirstOrDefault(it => it.Fn == fn);
|
||||
if (tb3761Fn == null) return null;
|
||||
|
||||
var hexDatas = (List<string>)hexStringList.GetAnalyzeValue(CommandChunkEnum.Data);
|
||||
var analyzeValue = (List<string>)hexStringList.GetAnalyzeValue(CommandChunkEnum.Data);
|
||||
|
||||
foreach (var up in tb3761Fn.UpList)
|
||||
{
|
||||
var value = AnalyzeDataAccordingDataType(hexDatas, up.DataIndex, up.DataCount, up.DataType);
|
||||
var value = AnalyzeDataAccordingDataType(analyzeValue, up.DataIndex, up.DataCount, up.DataType);
|
||||
if (value != null)
|
||||
{
|
||||
up.Value = value.ToString();
|
||||
@ -705,7 +704,7 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
{
|
||||
for (var j = 0; j < repeatCount; j++)
|
||||
{
|
||||
var val = AnalyzeDataAccordingDataType(hexDatas, dataIndex, upChild.DataCount, upChild.DataType);
|
||||
var val = AnalyzeDataAccordingDataType(analyzeValue, dataIndex, upChild.DataCount, upChild.DataType);
|
||||
if (val != null)
|
||||
{
|
||||
upChild.Value = val.ToString();
|
||||
@ -741,9 +740,9 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
// }
|
||||
}
|
||||
|
||||
private object? AnalyzeDataAccordingDataType(List<string> hexDatas, int dataIndex,int dataCount,string dataType)
|
||||
private object? AnalyzeDataAccordingDataType(List<string> analyzeValue, int dataIndex,int dataCount,string dataType)
|
||||
{
|
||||
var valueList = hexDatas.Skip(dataIndex).Take(dataCount).ToList();
|
||||
var valueList = analyzeValue.Skip(dataIndex).Take(dataCount).ToList();
|
||||
object? value = null;
|
||||
switch (dataType)
|
||||
{
|
||||
@ -771,11 +770,11 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
case "A15":
|
||||
if (valueList.Count == 5)
|
||||
{
|
||||
//var minutes = Convert.ToInt32(hexDatas[0]); // 获取当前分钟数
|
||||
//var hours = Convert.ToInt32(hexDatas[1]); // 获取当前小时数
|
||||
//var day = Convert.ToInt32(hexDatas[2]); // 获取当前日期的日数
|
||||
//var month = Convert.ToInt32(hexDatas[3]); // 获取当前月份
|
||||
//var year = Convert.ToInt32(hexDatas[4]); // 获取当前日期的年份
|
||||
//var minutes = Convert.ToInt32(analyzeValue[0]); // 获取当前分钟数
|
||||
//var hours = Convert.ToInt32(analyzeValue[1]); // 获取当前小时数
|
||||
//var day = Convert.ToInt32(analyzeValue[2]); // 获取当前日期的日数
|
||||
//var month = Convert.ToInt32(analyzeValue[3]); // 获取当前月份
|
||||
//var year = Convert.ToInt32(analyzeValue[4]); // 获取当前日期的年份
|
||||
value = AnalyzeDataAccordingToA15(valueList[0], valueList[1], valueList[2], valueList[3], valueList[4]);
|
||||
}
|
||||
break;
|
||||
@ -801,7 +800,7 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
/// <returns></returns>
|
||||
public virtual async Task AnalyzeTransparentForwardingAnswerAsync(MessageReceived messageReceivedEvent, Action<byte[]>? sendAction = null)
|
||||
{
|
||||
var hexDatas = GetHexDatas(messageReceivedEvent.MessageHexString);
|
||||
var hexDatas = GetHexData(messageReceivedEvent.MessageHexString);
|
||||
|
||||
var port = hexDatas[0].HexToDec();
|
||||
|
||||
@ -828,7 +827,7 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
/// <returns></returns>
|
||||
public virtual async Task AnalyzeTransparentForwardingAnswerResultAsync(MessageReceived messageReceived, Action<byte[]>? sendAction = null)
|
||||
{
|
||||
var hexDatas = GetHexDatas(messageReceived.MessageHexString);
|
||||
var hexDatas = GetHexData(messageReceived.MessageHexString);
|
||||
|
||||
var port = hexDatas[0].HexToDec();
|
||||
|
||||
@ -844,25 +843,25 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
|
||||
/// </summary>
|
||||
/// <param name="messageHexString"></param>
|
||||
/// <returns></returns>
|
||||
public static List<string> GetHexDatas(string messageHexString)
|
||||
public static List<string> GetHexData(string messageHexString)
|
||||
{
|
||||
var hexStringList = messageHexString.StringToPairs();
|
||||
var hexDatas = (List<string>)hexStringList.GetAnalyzeValue(CommandChunkEnum.Data);
|
||||
return hexDatas;
|
||||
var analyzeValue = (List<string>)hexStringList.GetAnalyzeValue(CommandChunkEnum.Data);
|
||||
return analyzeValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解析时间标签
|
||||
/// </summary>
|
||||
/// <param name="hexDatas"></param>
|
||||
public void AnalysisTp(List<string> hexDatas)
|
||||
/// <param name="hexData"></param>
|
||||
public void AnalysisTp(List<string> hexData)
|
||||
{
|
||||
var pFC = hexDatas[0].HexToDec();//启动帧帧序号计数器
|
||||
var seconds = Convert.ToInt32(hexDatas[1]); // 获取当前秒数
|
||||
var minutes = Convert.ToInt32(hexDatas[2]); // 获取当前分钟数
|
||||
var hours = Convert.ToInt32(hexDatas[3]); // 获取当前小时数
|
||||
var day = Convert.ToInt32(hexDatas[4]); // 获取当前日期的日数
|
||||
var delayTime = hexDatas[5].HexToDec();//延迟时间 min
|
||||
var pFC = hexData[0].HexToDec();//启动帧帧序号计数器
|
||||
var seconds = Convert.ToInt32(hexData[1]); // 获取当前秒数
|
||||
var minutes = Convert.ToInt32(hexData[2]); // 获取当前分钟数
|
||||
var hours = Convert.ToInt32(hexData[3]); // 获取当前小时数
|
||||
var day = Convert.ToInt32(hexData[4]); // 获取当前日期的日数
|
||||
var delayTime = hexData[5].HexToDec();//延迟时间 min
|
||||
}
|
||||
|
||||
#region 报文指定的数据格式
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user