This commit is contained in:
Dai Mr 2024-11-07 21:18:54 +08:00
parent d9c54677a9
commit c39b0b7889

View File

@ -381,15 +381,16 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
/// <summary> /// <summary>
/// 数据格式05 /// 数据格式05
/// </summary> /// </summary>
/// <param name="hex1"></param> /// <param name="singleDigitNumberAndDeciles">个位和十分位</param>
/// <param name="hex2"></param> /// <param name="hundredDigitNumbersAndTenDigitNumber">百位和十位</param>
private decimal AnalysisA05(string hex1,string hex2) /// <returns></returns>
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 hundredDigitNumbers = bin1.Substring(1, 3).BinToDec();//百位
var tenDigitNumber = bin1.Substring(4).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 singleDigitNumber = bin1.Substring(0, 4).BinToDec();//个位
var deciles = bin1.Substring(4).BinToDec();//十分位 var deciles = bin1.Substring(4).BinToDec();//十分位
@ -400,35 +401,37 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
/// <summary> /// <summary>
/// 数据格式07 /// 数据格式07
/// </summary> /// </summary>
/// <param name="hex1"></param> /// <param name="singleDigitNumberAndDeciles">个位、十分位</param>
/// <param name="hex2"></param> /// <param name="hundredDigitNumbersAndTenDigitNumber">百位、十位</param>
private decimal AnalysisA07(string hex1, string hex2) /// <returns></returns>
private decimal AnalysisA07(string singleDigitNumberAndDeciles,string hundredDigitNumbersAndTenDigitNumber)
{ {
var bin1 = hex1.HexToBin().PadLeft(8, '0'); var bin1 = hundredDigitNumbersAndTenDigitNumber.HexToBin().PadLeft(8, '0');
var tenDigitNumber = bin1.Substring(1, 3).BinToDec();// var hundredDigitNumbers = bin1.Substring(1, 3).BinToDec();//
var singleDigitNumber = bin1.Substring(4).BinToDec();// var tenDigitNumber = bin1.Substring(4).BinToDec();//
var bin2 = hex2.HexToBin().PadLeft(8, '0'); var bin2 = singleDigitNumberAndDeciles.HexToBin().PadLeft(8, '0');
var deciles = bin1.Substring(0, 4).BinToDec();//十分 var singleDigitNumber = bin2.Substring(0, 4).BinToDec();//
var percentile = bin1.Substring(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; return value;
} }
/// <summary> /// <summary>
/// 数据格式09 /// 数据格式09
/// </summary> /// </summary>
/// <param name="hex1"></param> /// <param name="thousandthPercentileAndTenThousandPositions">千分位和万分位</param>
/// <param name="hex2"></param> /// <param name="decilesAndPercentile">十分位和百分位</param>
/// <param name="hex3"></param> /// <param name="tenAndSingleDigit">十位和个位</param>
private decimal AnalysisA09(string hex1, string hex2, string tenAndSingleDigit) /// <returns></returns>
private decimal AnalysisA09(string thousandthPercentileAndTenThousandPositions, string decilesAndPercentile, string tenAndSingleDigit)
{ {
var bin3 = tenAndSingleDigit.HexToBin().PadLeft(8, '0'); var bin3 = tenAndSingleDigit.HexToBin().PadLeft(8, '0');
var tenDigitNumber = bin3.Substring(1, 3).BinToDec();//十位 var tenDigitNumber = bin3.Substring(1, 3).BinToDec();//十位
var singleDigitNumber = bin3.Substring(4).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; return value;
//var bin3 = hex3.HexToBin().PadLeft(8, '0'); //var bin3 = hex3.HexToBin().PadLeft(8, '0');
@ -445,41 +448,19 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
/// <summary> /// <summary>
/// 数据格式12 TODO:待优化 /// 数据格式12 TODO:待优化
/// </summary> /// </summary>
/// <param name="hex1"></param> /// <param name="tenDigitNumberAndSingleDigitNumber">十位 个位</param>
/// <param name="hex2"></param> /// <param name="hundredsOfPositionAndThousandOfPosition">千位 百位</param>
/// <param name="hex3"></param> /// <param name="hundredThousandOfPositionAndTenThousandOfPosition">十万位 万位</param>
/// <param name="hex4"></param> /// <param name="millionsOfPositionAndMillionOfPosition">千万位 百万位</param>
/// <param name="hex5"></param> /// <param name="billionOfPositionAndHundredMillionOfPosition">十亿位 亿位</param>
/// <param name="hex6"></param> /// <param name="hundredBillionsOfPositionAndBillionsOfPosition">千亿位 百亿位</param>
/// <returns></returns> /// <returns></returns>
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 value = $"{hundredBillionsOfPositionAndBillionsOfPosition}{billionOfPositionAndHundredMillionOfPosition}{millionsOfPositionAndMillionOfPosition}" +
var billionOfPosition = bin2.Substring(0, 4).BinToDec();//十亿位 $"{hundredThousandOfPositionAndTenThousandOfPosition}{hundredsOfPositionAndThousandOfPosition}{tenDigitNumberAndSingleDigitNumber}";
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}";
return value; return value;
} }
@ -487,36 +468,18 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
/// <summary> /// <summary>
/// 数据格式14 /// 数据格式14
/// </summary> /// </summary>
/// <param name="hex1"></param> /// <param name="tenThousandPositionsAndThousandthPercentile">千分,万分</param>
/// <param name="hex2"></param> /// <param name="decilesAndPercentile">十分、百分</param>
/// <param name="hex3"></param> /// <param name="tenDigitNumberAndSingleDigitNumber">十位、个位</param>
/// <param name="hex4"></param> /// <param name="thousandOfPositionAndHundredsOfPosition">千位、百位</param>
/// <param name="hex5"></param> /// <param name="hundredThousandOfPositionAndTenThousandOfPosition">十万位、万位</param>
/// <returns></returns> /// <returns></returns>
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 value = decimal.Parse($"{hundredThousandOfPositionAndTenThousandOfPosition}{thousandOfPositionAndHundredsOfPosition}" +
var thousandOfPosition = bin2.Substring(0, 4).BinToDec();//千位 $"{tenDigitNumberAndSingleDigitNumber}.{decilesAndPercentile}{tenThousandPositionsAndThousandthPercentile}");
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}");
return value; return value;
} }
@ -524,16 +487,16 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
/// <summary> /// <summary>
/// 数据格式A.15 /// 数据格式A.15
/// </summary> /// </summary>
/// <param name="hex1"></param> /// <param name="minuteHex"></param>
/// <param name="hex2"></param> /// <param name="hourHex"></param>
/// <param name="hex3"></param> /// <param name="dayHex"></param>
/// <param name="hex4"></param> /// <param name="monthHex"></param>
/// <param name="hex5"></param> /// <param name="yearHex"></param>
/// <returns></returns> /// <returns></returns>
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 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; return time;
//正常转换方式 //正常转换方式
//var bin1 = hex1.HexToBin().PadLeft(8, '0'); //var bin1 = hex1.HexToBin().PadLeft(8, '0');
@ -558,43 +521,56 @@ namespace JiShe.CollectBus.Protocol.Contracts.Abstracts
//var singleDigitNumberOfYear = bin5.Substring(4).BinToDec();//个位 //var singleDigitNumberOfYear = bin5.Substring(4).BinToDec();//个位
} }
private void AnalysisA20(string hex1, string hex2, string hex3)
/// <summary>
/// 数据格式20
/// </summary>
/// <param name="dayHex"></param>
/// <param name="monthHex"></param>
/// <param name="yearHex"></param>
/// <returns></returns>
private DateTime AnalysisA20(string dayHex, string monthHex, string yearHex)
{ {
var bin1 = hex1.HexToBin().PadLeft(8, '0'); var centuryString = (DateTime.Now.Year / 100).ToString();
var tenDigitNumberOfYear = bin1.Substring(0, 4).BinToDec();//十位 var time = DateTime.Parse($"{centuryString}{yearHex}-{monthHex}-{dayHex}");
var singleDigitNumberOfYear = bin1.Substring(4).BinToDec();//个位 return time;
var bin2 = hex2.HexToBin().PadLeft(8, '0'); //var bin1 = hex1.HexToBin().PadLeft(8, '0');
var tenDigitNumberOfMonth = bin2.Substring(0, 4).BinToDec();//十位 //var tenDigitNumberOfYear = bin1.Substring(0, 4).BinToDec();//十位
var singleDigitNumberOfMonth = bin2.Substring(4).BinToDec();//个位 //var singleDigitNumberOfYear = bin1.Substring(4).BinToDec();//个位
var bin3 = hex3.HexToBin().PadLeft(8, '0'); //var bin2 = hex2.HexToBin().PadLeft(8, '0');
var tenDigitNumberOfDay = bin3.Substring(0, 4).BinToDec();//十位 //var tenDigitNumberOfMonth = bin2.Substring(0, 4).BinToDec();//十位
var singleDigitNumberOfDay = bin3.Substring(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();//个位
} }
/// <summary> /// <summary>
/// 数据格式25 /// 数据格式25
/// </summary> /// </summary>
/// <param name="hex1"></param> /// <param name="percentileAndThousandthPercentile">百分、千分位</param>
/// <param name="hex2"></param> /// <param name="singleDigitNumberAndDeciles">个位、十分位</param>
/// <param name="hex3"></param> /// <param name="hundredDigitNumbersAndTenDigitNumber">百位、十位</param>
private decimal AnalysisA25(string hex1, string hex2, string hex3) /// <returns></returns>
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 hundredDigitNumbers = bin1.Substring(1, 3).BinToDec();//百位
var tenDigitNumber = bin1.Substring(4).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 singleDigitNumber = bin2.Substring(0, 4).BinToDec();//个位
var deciles = bin1.Substring(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; return value;
} }