From 04779efe2410fb0df1ff983b26384d56471b85cf Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期五, 08 十一月 2024 08:50:52 +0800 Subject: [PATCH] RTU远程升级管理及相关代码适应性调整与修改 --- pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/CommonV2.java | 79 ++++++++++++++++++++++++++++----------- 1 files changed, 57 insertions(+), 22 deletions(-) diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/CommonV2.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/CommonV2.java index a0d3c47..ebcaacf 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/CommonV2.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/CommonV2.java @@ -1,5 +1,6 @@ package com.dy.common.mw.protocol.p206V2; +import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1; import com.dy.common.util.ByteUtil; import com.dy.common.util.ByteUtilUnsigned; import com.dy.common.util.CRC8_for_2_0; @@ -12,19 +13,48 @@ * @return true鏄�,false鍚� * @throws Exception 寮傚父 */ - public Boolean isThisProtocolHead(byte[] bs) throws Exception{ + public Boolean[] isThisProtocolHead(byte[] bs) throws Exception{ if(bs == null){ return null ; }else if(bs.length >= (ProtocolConstantV206V2.ctrlIndex) && bs[ProtocolConstantV206V2.headFlag1Index] == ProtocolConstantV206V2.P_Head_Byte && bs[ProtocolConstantV206V2.headFlag2Index] == ProtocolConstantV206V2.P_Head_Byte){ Short vs = this.parseVersion(bs) ; - return vs.shortValue() == ProtocolConstantV206V2.protocolVer.shortValue() ; + if(vs.shortValue() == ProtocolConstantV206V2.protocolVer.shortValue()){ + return new Boolean[]{true, true}; + }else{ + return new Boolean[]{false, true}; + } + }else if(bs.length >= (ProtocolConstantV206V2.UG_codeIndex) + && bs[0] == ProtocolConstantV206V2.UG_P_Head_Byte + && bs[3] == ProtocolConstantV206V2.UG_P_Head_Byte){ + return new Boolean[]{true, false} ; }else{ - return false ; + return new Boolean[]{false, false} ; } } + /** + * 妫�鏌ュ崗璁被鍨� + * @param bs 涓婅瀛楄妭鏁扮粍 + * @return 鍗忚绫诲瀷 + * @throws Exception 寮傚父 + */ + public Boolean protocolType_p206TrueUgFalse(byte[] bs){ + if(bs == null){ + return null ; + }else if(bs.length >= (ProtocolConstantV206V2.ctrlIndex) + && bs[0] == ProtocolConstantV206V2.P_Head_Byte + && bs[2] == ProtocolConstantV206V2.P_Head_Byte){ + return true ; + }else if(bs.length >= (ProtocolConstantV206V2.UG_codeIndex) + && bs[0] == ProtocolConstantV206V2.UG_P_Head_Byte + && bs[3] == ProtocolConstantV206V2.UG_P_Head_Byte){ + return false ; + }else{ + return null ; + } + } /** * 鍒嗘瀽鐗堟湰鍙� * @param bs @@ -33,18 +63,7 @@ public Short parseVersion(byte[] bs)throws Exception{ return ByteUtil.byte2PlusInt(bs[ProtocolConstantV206V2.versionIndex]) ; } - - /** - * 妫�鏌ュご - * @param bs 涓婅瀛楄妭鏁扮粍 - * @throws Exception 寮傚父 - */ - public void checkHead(byte[] bs) throws Exception{ - if(bs.length < ProtocolConstantV206V2.onLineDataMinLength || bs[0] != ProtocolConstantV206V2.P_Head_Byte || bs[2] != ProtocolConstantV206V2.P_Head_Byte){ - throw new Exception("涓婅鏁版嵁甯уご涓嶆纭紒") ; - } - } - + /** * 妫�鏌ュ熬 * @param bs 涓婅瀛楄妭鏁扮粍 @@ -60,24 +79,40 @@ /** * 鍒嗘瀽甯ч暱搴� * @param bs 涓婅瀛楄妭鏁扮粍 + * @param p206TrueUgFalse 206鍗忚涓簍rue锛屽崌绾у崗璁负false * @return 鏁版嵁闀垮害 * @throws Exception 寮傚父 */ - public int parseFrameLen(byte[] bs)throws Exception{ - int len = ByteUtilUnsigned.byte2Byte(bs, ProtocolConstantV206V2.dataLenIndex) ; - return len + ProtocolConstantV206V2.lenHead2ctrl + ProtocolConstantV206V2.lenTail ; + public int parseFrameLen(byte[] bs, boolean p206TrueUgFalse)throws Exception{ + if(p206TrueUgFalse) { + int len = ByteUtilUnsigned.byte2Byte(bs, ProtocolConstantV206V2.dataLenIndex); + return len + ProtocolConstantV206V2.lenHead2ctrl + ProtocolConstantV206V2.lenTail; + }else{ + int len = ByteUtilUnsigned.bytes2Short_BE(bs, ProtocolConstantV206V2.UG_dataLenIndex_start); + return len + ProtocolConstantV206V2.UG_lenHead2Cmd + ProtocolConstantV206V2.UG_lenTail; + } } - /** - * 鍒嗘瀽鐢ㄦ埛鏁版嵁鍩熷瓧鑺傛暟 + * 鍒嗘瀽鐢ㄦ埛鏁版嵁鍩熷瓧鑺傛暟(榛樿鏄潪鍗囩骇鍗忚) * @param bs 涓婅瀛楄妭鏁扮粍 * @return 鏁版嵁闀垮害 * @throws Exception 寮傚父 */ - public int parseDataLen(byte[] bs)throws Exception{ + public int parseDataLen4P206(byte[] bs)throws Exception{ int len = ByteUtilUnsigned.byte2Byte(bs, ProtocolConstantV206V2.dataLenIndex) ; - return len + ProtocolConstantV206V2.lenHead2ctrl + ProtocolConstantV206V2.lenTail ; + return len - ProtocolConstantV206V2.lenCtrl - ProtocolConstantV206V2.lenRtuAddr ; + } + + /** + * 鍒嗘瀽鐢ㄦ埛鏁版嵁鍩熷瓧鑺傛暟(鍗囩骇鍗忚) + * @param bs 涓婅瀛楄妭鏁扮粍 + * @return 鏁版嵁闀垮害 + * @throws Exception 寮傚父 + */ + public int parseDataLen4Ug(byte[] bs)throws Exception{ + int len = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V2.UG_dataLenIndex_start) ; + return len - ProtocolConstantV206V2.UG_lenCmd - ProtocolConstantV206V2.UG_lenRtuAddr ; } -- Gitblit v1.8.0