From a43b3f62fa364c3f8c5e3a62ea37cef6faff4af8 Mon Sep 17 00:00:00 2001
From: wuzeyu <1223318623@qq.com>
Date: 星期四, 25 七月 2024 17:41:37 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java |  127 ++++++++++++++++++++++++++++++++---------
 1 files changed, 98 insertions(+), 29 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java
index 9ab7b11..929f503 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java
@@ -2,6 +2,7 @@
 
 import com.dy.common.util.ByteUtil;
 import com.dy.common.util.ByteUtilUnsigned;
+import com.dy.common.util.CRC8_for_2_0;
 
 
 public class CommonV1_0_1 {
@@ -49,13 +50,26 @@
 
 
 	/**
-	 * 鍒嗘瀽鏁版嵁瀛楄妭鏁�
+	 * 鍒嗘瀽甯ч暱搴�
+	 * @param bs 涓婅瀛楄妭鏁扮粍
+	 * @return 鏁版嵁闀垮害
+	 * @throws Exception 寮傚父
+	 */
+	public int parseFrameLen(byte[] bs)throws Exception{
+		int len = ByteUtilUnsigned.byte2Byte(bs, ProtocolConstantV206V1_0_0.dataLenIndex) ;
+		return len + ProtocolConstantV206V1_0_0.lenHead2ctrl + ProtocolConstantV206V1_0_0.lenTail ;
+	}
+
+
+	/**
+	 * 鍒嗘瀽鐢ㄦ埛鏁版嵁鍩熷瓧鑺傛暟
 	 * @param bs 涓婅瀛楄妭鏁扮粍
 	 * @return 鏁版嵁闀垮害
 	 * @throws Exception 寮傚父
 	 */
 	public int parseDataLen(byte[] bs)throws Exception{
-		return ByteUtilUnsigned.bytes2Short_BE(bs, ProtocolConstantV206V1_0_0.dataLenIndex) ;
+		int len = ByteUtilUnsigned.byte2Byte(bs, ProtocolConstantV206V1_0_0.dataLenIndex) ;
+		return len + ProtocolConstantV206V1_0_0.lenHead2ctrl + ProtocolConstantV206V1_0_0.lenTail ;
 	}
 
 
@@ -67,12 +81,30 @@
 	 */
 	public String parseRtuAddr(byte[] bs)throws Exception{
 		String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, ProtocolConstantV206V1_0_0.rtuAddr1Index_start, ProtocolConstantV206V1_0_0.rtuAddr1Index_end) ;
-		String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_BE(bs, ProtocolConstantV206V1_0_0.rtuAddr2Index_start) ;
-		while(rtuAddrStr.length() < 6){
+		String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.rtuAddr2Index_start) ;
+		while(rtuAddrStr.length() <= 5){
 			rtuAddrStr = "0" + rtuAddrStr ;
 		}
 		return rtuAddrBCD + rtuAddrStr ;
 	}
+
+
+	/**
+	 * 鍒嗘瀽Rtu鍦板潃
+	 * @param bs 涓婅瀛楄妭鏁扮粍
+	 * @param index 鍚浣�
+	 * @return 鎺у埗鍣ㄥ湴鍧�
+	 * @throws Exception 寮傚父
+	 */
+	public String parseRtuAddr(byte[] bs, int index)throws Exception{
+		String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, index, index + 2) ;//鍦板潃鏄ぇ绔ā寮�
+		String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_LE(bs, index + 3) ;
+		while(rtuAddrStr.length() <= 5){
+			rtuAddrStr = "0" + rtuAddrStr ;
+		}
+		return rtuAddrBCD + rtuAddrStr ;
+	}
+
 
 	/**
 	 * 鍒嗘瀽鍔熻兘鐮�
@@ -83,20 +115,6 @@
 		return ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V1_0_0.codeIndex, 1) ;
 	}
 
-
-	/**
-	 * 鏍¢獙鍜屾鏌�
-	 * @param bs 涓婅瀛楄妭鏁扮粍
-	 * @return 閫氳繃true,鏈�氳繃false
-	 */
-	public boolean checkCrc(byte[] bs) {
-		byte he = 0 ;
-		for(int i = 0 ; i <= bs.length - 3 ; i++){
-			he = (byte)(he + bs[i]) ;
-		}
-		return bs[bs.length - 2] == he ;
-	}
-
 	/**
 	 * 鏍¢獙鍜屾鏌�
 	 * @param bs  涓婅瀛楄妭鏁扮粍
@@ -104,16 +122,12 @@
 	 * @throws Exception 寮傚父
 	 */
 	public String checkCrc_str(byte[] bs) throws Exception {
-		byte[] he = new byte[1] ;
-		for(int i = 0 ; i <= bs.length - 3 ; i++){
-			he[0] = (byte)(he[0] + bs[i]) ;
-		}
-		short hes = ByteUtilUnsigned.byte2Byte(he, 0);
-		short heOrg = ByteUtilUnsigned.byte2Byte(bs, bs.length - 2);
-		if(hes == heOrg){
+		byte crcCompute = (byte)new CRC8_for_2_0().CRC8(bs, ProtocolConstantV206V1_0_0.ctrlIndex, bs.length - 3) ;
+		byte crcInBs = bs[bs.length - 2] ;
+		if(crcCompute == crcInBs){
 			return null ;
 		}else{
-			return "璁$畻鏍¢獙鍜屾槸:" + hes + "锛屼笂浼犳牎楠屽拰鏄�" + heOrg ;
+			return "璁$畻CRC鏄�:" + crcCompute + "锛屼笂浼燙RC鏄�" + crcInBs ;
 		}
 	}
 
@@ -123,18 +137,35 @@
 	D7                  D6                  D5锝濪4            D3锝濪0
 	浼犺緭鏂瑰悜浣� DIR        鎷嗗垎鏍囧織浣� DIV       甯ц鏁颁綅 FCB       鍔熻兘鐮�
 	*/
-	public byte createCtrl(byte funcCode){
-		byte b = 0 ;
+	public byte createCtrl(byte dir, byte funcCode){
+		byte b = dir;//(byte)0x80//鎺у埗鍩燂細DIR=1锛岃〃绀烘甯ф姤鏂囨槸鐢辩粓绔彂鍑虹殑涓婅鎶ユ枃锛�
 		b = (byte)(b | funcCode) ;
 		//FCB == 3
-		b = (byte)(b | (byte)60) ;
+		b = (byte)(b | (byte)0x18) ;
 		//DIV = 0
 		//DIR = 0
 		return b ;
 	}
+	/**
+	 * 寰楀埌IC鍗$被鍨嬪悕绉� 锛� 鍗$被鍨�(1:鐢ㄦ埛鍗★紱2锛氱鐞嗗憳鍗★紱3锛氳皟璇曞崱锛�4锛氬紑鍏抽榾鍗★紱5锛氭竻绌哄崱)锛�
+	 * @param type 瀛楄妭
+	 * @return 鍚嶇О
+	 */
+	public static String icCardType(byte type){
+		return switch (type) {
+			case 0 -> "鏃犲崱";
+			case 1 -> "鐢ㄦ埛鍗�";
+			case 2 -> "绠$悊鍛樺崱";
+			case 3 -> "璋冭瘯鍗�";
+			case 4 -> "寮�鍏抽榾鍗�";
+			case 5 -> "娓呯┖鍗�";
+			default -> "鏈煡";
+		};
+	}
 
 	/**
 	 * 寰楀埌鍏冲紑闃�绫诲瀷鍚嶇О
+	 * 寮�鍏抽榾绫诲瀷(1:鍒峰崱寮�闃�锛�2:鍒峰崱鍏抽榾锛�3:涓績绔欏紑闃�锛�4:涓績绔欏叧闃�锛�5:娆犺垂鍏抽榾锛�6:娴侀噺璁℃晠闅滃叧闃�锛�7:绱ф�ュ叧闂紱8:鐢ㄦ埛杩滅▼寮�闃�锛�9:鐢ㄦ埛杩滅▼鍏抽榾锛�10:寮�鍏抽榾鍗″叧闃�锛�11:寮�鍏抽榾鍗″埛鍗″崱寮�闃�锛�)
 	 * @param type 瀛楄妭
 	 * @return 鍚嶇О
 	 */
@@ -149,9 +180,47 @@
 			case 7 -> "绱ф�ュ叧闃�";
 			case 8 -> "鐢ㄦ埛杩滅▼寮�闃�";
 			case 9 -> "鐢ㄦ埛杩滅▼鍏抽榾";
+			case 10 -> "寮�鍏抽榾鍗″叧闃�";
+			case 11 -> "寮�鍏抽榾鍗″紑闃�";
 			default -> "鏈煡";
 		};
 	}
+	public static Boolean isCloseValveType(byte type){
+		return switch (type) {
+			case 1 -> false ;
+			case 2 -> true ;
+			case 3 -> false ;
+			case 4 -> true ;
+			case 5 -> true ;
+			case 6 -> true ;
+			case 7 -> true ;
+			case 8 -> false ;
+			case 9 -> true ;
+			case 10 -> true ;
+			case 11 -> false ;
+			default -> null ;
+		};
+	}
+
+//	/**
+//	 * 澶勭悊IC鍗$紪鍙凤紝闈虫�诲埗瀹氱殑鍗忚瑕佹眰10浣岻C鍗$紪鍙�
+//	 * @param icCardNo
+//	 * @return
+//	 */
+//	public static String[] dealIcCardNo(String icCardNo){
+//		if(icCardNo.length() > 10){
+//			String tail = icCardNo.substring(icCardNo.length() - 10) ;
+//			String head = icCardNo.substring(0, icCardNo.length() - 10) ;
+//			return new String[]{head , tail} ;
+//		}else if(icCardNo.length() < 10){
+//			while(icCardNo.length() != 10){
+//				icCardNo = "0" + icCardNo ;
+//			}
+//			return new String[]{null , icCardNo} ;
+//		}else{
+//			return new String[]{null , icCardNo} ;
+//		}
+//	}
 	
 	/*
 	 * 鍒嗘瀽鐗堟湰鍙�

--
Gitblit v1.8.0