From c39b0b7889c7dd41cb6f0cd6b1c564a450741f61 Mon Sep 17 00:00:00 2001 From: Dai Mr <1822802785@qq.com> Date: Thu, 7 Nov 2024 21:18:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Abstracts/BaseProtocolPlugin.cs | 198 ++++++++---------- 1 file changed, 87 insertions(+), 111 deletions(-) diff --git a/JiShe.CollectBus.Protocol.Contracts/Abstracts/BaseProtocolPlugin.cs b/JiShe.CollectBus.Protocol.Contracts/Abstracts/BaseProtocolPlugin.cs index 689c55e..2f7f619 100644 --- a/JiShe.CollectBus.Protocol.Contracts/Abstracts/BaseProtocolPlugin.cs +++ b/JiShe.CollectBus.Protocol.Contracts/Abstracts/BaseProtocolPlugin.cs @@ -381,15 +381,16 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts /// /// 数据格式05 /// - /// - /// - private decimal AnalysisA05(string hex1,string hex2) + /// 个位和十分位 + /// 百位和十位 + /// + private decimal AnalysisA05(string singleDigitNumberAndDeciles, string hundredDigitNumbersAndTenDigitNumber) { - var bin1 = hex1.HexToBin().PadLeft(8, '0'); + var bin1 = hundredDigitNumbersAndTenDigitNumber.HexToBin().PadLeft(8, '0'); var hundredDigitNumbers = bin1.Substring(1, 3).BinToDec();//百位 var tenDigitNumber = bin1.Substring(4).BinToDec();//十位 - var bin2 = hex2.HexToBin().PadLeft(8,'0'); + var bin2 = singleDigitNumberAndDeciles.HexToBin().PadLeft(8,'0'); var singleDigitNumber = bin1.Substring(0, 4).BinToDec();//个位 var deciles = bin1.Substring(4).BinToDec();//十分位 @@ -400,35 +401,37 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts /// /// 数据格式07 /// - /// - /// - private decimal AnalysisA07(string hex1, string hex2) + /// 个位、十分位 + /// 百位、十位 + /// + private decimal AnalysisA07(string singleDigitNumberAndDeciles,string hundredDigitNumbersAndTenDigitNumber) { - var bin1 = hex1.HexToBin().PadLeft(8, '0'); - var tenDigitNumber = bin1.Substring(1, 3).BinToDec();//十位 - var singleDigitNumber = bin1.Substring(4).BinToDec();//个位 + var bin1 = hundredDigitNumbersAndTenDigitNumber.HexToBin().PadLeft(8, '0'); + var hundredDigitNumbers = bin1.Substring(1, 3).BinToDec();//百位 + var tenDigitNumber = bin1.Substring(4).BinToDec();//十位 - var bin2 = hex2.HexToBin().PadLeft(8, '0'); - var deciles = bin1.Substring(0, 4).BinToDec();//十分位 - var percentile = bin1.Substring(4).BinToDec();//百分位 + var bin2 = singleDigitNumberAndDeciles.HexToBin().PadLeft(8, '0'); + var singleDigitNumber = bin2.Substring(0, 4).BinToDec();//个位 + var deciles = bin2.Substring(4).BinToDec();//十分位 - var value = decimal.Parse($"{tenDigitNumber}{singleDigitNumber}.{deciles}{percentile}"); + var value = decimal.Parse($"{hundredDigitNumbers}{tenDigitNumber}{singleDigitNumber}.{deciles}"); return value; } /// - /// 数据格式09 + /// 数据格式09 /// - /// - /// - /// - private decimal AnalysisA09(string hex1, string hex2, string tenAndSingleDigit) + /// 千分位和万分位 + /// 十分位和百分位 + /// 十位和个位 + /// + private decimal AnalysisA09(string thousandthPercentileAndTenThousandPositions, string decilesAndPercentile, string tenAndSingleDigit) { var bin3 = tenAndSingleDigit.HexToBin().PadLeft(8, '0'); var tenDigitNumber = bin3.Substring(1, 3).BinToDec();//十位 var singleDigitNumber = bin3.Substring(4).BinToDec();//个位 - var value = decimal.Parse($"{tenDigitNumber}{singleDigitNumber}.{hex2}{hex1}"); + var value = decimal.Parse($"{tenDigitNumber}{singleDigitNumber}.{decilesAndPercentile}{thousandthPercentileAndTenThousandPositions}"); return value; //var bin3 = hex3.HexToBin().PadLeft(8, '0'); @@ -445,41 +448,19 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts /// /// 数据格式12 TODO:待优化 /// - /// - /// - /// - /// - /// - /// + /// 十位 个位 + /// 千位 百位 + /// 十万位 万位 + /// 千万位 百万位 + /// 十亿位 亿位 + /// 千亿位 百亿位 /// - private string AnalysisA12(string hex1, string hex2, string hex3, string hex4, string hex5, string hex6) + private string AnalysisA12(string tenDigitNumberAndSingleDigitNumber, string hundredsOfPositionAndThousandOfPosition, string hundredThousandOfPositionAndTenThousandOfPosition, + string millionsOfPositionAndMillionOfPosition, string billionOfPositionAndHundredMillionOfPosition, string hundredBillionsOfPositionAndBillionsOfPosition) { - var bin1 = hex1.HexToBin().PadLeft(8, '0'); ; - var hundredBillionsOfPosition = bin1.Substring(0, 4).BinToDec();//千亿位 - var billionsOfPosition = bin1.Substring(4).BinToDec();//百亿位 - - var bin2 = hex2.HexToBin().PadLeft(8, '0'); ; - var billionOfPosition = bin2.Substring(0, 4).BinToDec();//十亿位 - var hundredMillionOfPosition = bin2.Substring(4).BinToDec();//亿位 - - var bin3 = hex3.HexToBin().PadLeft(8, '0'); ; - var millionsOfPosition = bin3.Substring(0, 4).BinToDec();//千万位 - var millionOfPosition = bin3.Substring(4).BinToDec();//百万位 - - var bin4 = hex4.HexToBin().PadLeft(8, '0'); ; - var hundredThousandOfPosition = bin4.Substring(0, 4).BinToDec();//十万位 - var tenThousandOfPosition = bin4.Substring(4).BinToDec();//万位 - - var bin5 = hex5.HexToBin().PadLeft(8, '0'); ; - var thousandOfPosition = bin5.Substring(0, 4).BinToDec();//千位 - var hundredsOfPosition = bin5.Substring(4).BinToDec();//百位 - - var bin6 = hex6.HexToBin().PadLeft(8, '0'); - var tenDigitNumber = bin6.Substring(0, 4).BinToDec();//十位 - var singleDigitNumber = bin6.Substring(4).BinToDec();//个位 - - var value = $"{hundredBillionsOfPosition}{billionsOfPosition}{billionOfPosition}{hundredMillionOfPosition}{millionsOfPosition}" + - $"{hundredThousandOfPosition}{tenThousandOfPosition}{thousandOfPosition}{hundredsOfPosition}{tenDigitNumber}{singleDigitNumber}"; + + var value = $"{hundredBillionsOfPositionAndBillionsOfPosition}{billionOfPositionAndHundredMillionOfPosition}{millionsOfPositionAndMillionOfPosition}" + + $"{hundredThousandOfPositionAndTenThousandOfPosition}{hundredsOfPositionAndThousandOfPosition}{tenDigitNumberAndSingleDigitNumber}"; return value; } @@ -487,36 +468,18 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts /// /// 数据格式14 /// - /// - /// - /// - /// - /// + /// 千分,万分 + /// 十分、百分 + /// 十位、个位 + /// 千位、百位 + /// 十万位、万位 /// - private decimal AnalysisA14(string hex1, string hex2, string hex3, string hex4, string hex5) + private decimal AnalysisA14(string tenThousandPositionsAndThousandthPercentile, string decilesAndPercentile, + string tenDigitNumberAndSingleDigitNumber, string thousandOfPositionAndHundredsOfPosition, string hundredThousandOfPositionAndTenThousandOfPosition) { - var bin1 = hex1.HexToBin().PadLeft(8, '0'); - var hundredThousandOfPosition = bin1.Substring(0, 4).BinToDec();//十万位 - var tenThousandOfPosition = bin1.Substring(4).BinToDec();//万位 - - var bin2 = hex2.HexToBin().PadLeft(8, '0'); - var thousandOfPosition = bin2.Substring(0, 4).BinToDec();//千位 - var hundredsOfPosition = bin2.Substring(4).BinToDec();//百位 - - var bin3 = hex3.HexToBin().PadLeft(8, '0'); - var tenDigitNumber = bin3.Substring(0, 4).BinToDec();//十位 - var singleDigitNumber = bin3.Substring(4).BinToDec();//个位 - - var bin4 = hex4.HexToBin().PadLeft(8, '0'); - var deciles = bin4.Substring(0, 4).BinToDec();//十分位 - var percentile = bin4.Substring(4).BinToDec();//百分位 - - var bin5 = hex5.HexToBin().PadLeft(8, '0'); - var thousandthPercentile = bin5.Substring(0, 4).BinToDec();//千分位 - var tenThousandPositions = bin5.Substring(4).BinToDec();//万分位 - - var value = decimal.Parse($"{hundredThousandOfPosition}{tenThousandOfPosition}{thousandOfPosition}{hundredsOfPosition}" + - $"{tenDigitNumber}{singleDigitNumber}.{deciles}{percentile}{thousandthPercentile}{tenThousandPositions}"); + + var value = decimal.Parse($"{hundredThousandOfPositionAndTenThousandOfPosition}{thousandOfPositionAndHundredsOfPosition}" + + $"{tenDigitNumberAndSingleDigitNumber}.{decilesAndPercentile}{tenThousandPositionsAndThousandthPercentile}"); return value; } @@ -524,16 +487,16 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts /// /// 数据格式A.15 /// - /// - /// - /// - /// - /// + /// + /// + /// + /// + /// /// - private DateTime AnalysisA15(string hex1, string hex2, string hex3, string hex4, string hex5) + private DateTime AnalysisA15(string minuteHex, string hourHex, string dayHex, string monthHex, string yearHex) { var centuryString = (DateTime.Now.Year / 100).ToString(); - var time = DateTime.Parse($"{centuryString}{hex5}-{hex4}-{hex3} {hex2}:{hex1}:00"); + var time = DateTime.Parse($"{centuryString}{yearHex}-{monthHex}-{dayHex} {hourHex}:{minuteHex}:00"); return time; //正常转换方式 //var bin1 = hex1.HexToBin().PadLeft(8, '0'); @@ -558,43 +521,56 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts //var singleDigitNumberOfYear = bin5.Substring(4).BinToDec();//个位 } - private void AnalysisA20(string hex1, string hex2, string hex3) + + /// + /// 数据格式20 + /// + /// + /// + /// + /// + private DateTime AnalysisA20(string dayHex, string monthHex, string yearHex) { - var bin1 = hex1.HexToBin().PadLeft(8, '0'); - var tenDigitNumberOfYear = bin1.Substring(0, 4).BinToDec();//十位 - var singleDigitNumberOfYear = bin1.Substring(4).BinToDec();//个位 + var centuryString = (DateTime.Now.Year / 100).ToString(); + var time = DateTime.Parse($"{centuryString}{yearHex}-{monthHex}-{dayHex}"); + return time; - var bin2 = hex2.HexToBin().PadLeft(8, '0'); - var tenDigitNumberOfMonth = bin2.Substring(0, 4).BinToDec();//十位 - var singleDigitNumberOfMonth = bin2.Substring(4).BinToDec();//个位 + //var bin1 = hex1.HexToBin().PadLeft(8, '0'); + //var tenDigitNumberOfYear = bin1.Substring(0, 4).BinToDec();//十位 + //var singleDigitNumberOfYear = bin1.Substring(4).BinToDec();//个位 + + //var bin2 = hex2.HexToBin().PadLeft(8, '0'); + //var tenDigitNumberOfMonth = bin2.Substring(0, 4).BinToDec();//十位 + //var singleDigitNumberOfMonth = bin2.Substring(4).BinToDec();//个位 + + //var bin3 = hex3.HexToBin().PadLeft(8, '0'); + //var tenDigitNumberOfDay = bin3.Substring(0, 4).BinToDec();//十位 + //var singleDigitNumberOfDay = bin3.Substring(4).BinToDec();//个位 - var bin3 = hex3.HexToBin().PadLeft(8, '0'); - var tenDigitNumberOfDay = bin3.Substring(0, 4).BinToDec();//十位 - var singleDigitNumberOfDay = bin3.Substring(4).BinToDec();//个位 - } + + /// /// 数据格式25 /// - /// - /// - /// - private decimal AnalysisA25(string hex1, string hex2, string hex3) + /// 百分、千分位 + /// 个位、十分位 + /// 百位、十位 + /// + + private decimal AnalysisA25(string percentileAndThousandthPercentile,string singleDigitNumberAndDeciles, string hundredDigitNumbersAndTenDigitNumber) { - var bin1 = hex1.HexToBin().PadLeft(8, '0'); + var bin1 = hundredDigitNumbersAndTenDigitNumber.HexToBin().PadLeft(8, '0'); var hundredDigitNumbers = bin1.Substring(1, 3).BinToDec();//百位 var tenDigitNumber = bin1.Substring(4).BinToDec();//十位 - var bin2 = hex2.HexToBin().PadLeft(8, '0'); - var singleDigitNumber = bin1.Substring(0, 4).BinToDec();//个位 + var bin2 = singleDigitNumberAndDeciles.HexToBin().PadLeft(8, '0'); + var singleDigitNumber = bin2.Substring(0, 4).BinToDec();//个位 var deciles = bin1.Substring(4).BinToDec();//十分位 - var bin3 = hex3.HexToBin().PadLeft(8, '0'); - var percentile = bin3.Substring(0,4).BinToDec();//百分位 - var thousandthPercentile = bin3.Substring(4).BinToDec();//千分位 - var value = decimal.Parse($"{hundredDigitNumbers}{tenDigitNumber}{singleDigitNumber}.{deciles}{percentile}{thousandthPercentile}"); + var value = decimal.Parse($"{hundredDigitNumbers}{tenDigitNumber}{singleDigitNumber}.{deciles}{percentileAndThousandthPercentile}"); return value; }