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;
}