liurunyu
2025-04-02 84864ae37ed1237da21bc36f01a641de4b01cfa8
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java
@@ -1,9 +1,12 @@
package com.dy.common.mw.protocol.p206V2;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
import com.dy.common.util.DateTime;
@AnnotationDriver(enable = true, name= ProtocolConstantV206V2.protocolName)
@AnnotationDriver(enable = true,
      name= ProtocolConstantV206V2.protocolName,
      version= ProtocolConstantV206V2.protocolVer)
public class DriverV2 extends Driver {
   
   private static String scanRootPackage = "com.dy.common.mw.protocol.p206V2" ;
@@ -58,21 +61,21 @@
      boolean isFail = false ;
      String upCode = null ;
      Short protocolVersion = null ;
      Object[] codeDataGrp = {null};
      try{
         CommonV2 cp = new CommonV2() ;
         cp.checkHead(upBuffer) ;
         Boolean p206TrueUgFalse = cp.protocolType_p206TrueUgFalse(upBuffer) ;
         //到此处了,p206TrueUgFalse不可能为空了
         cp.checkTail(upBuffer) ;
         String crcStr = cp.checkCrc_str(upBuffer) ;
         String crcStr = cp.checkCrc_str(upBuffer, p206TrueUgFalse) ;
         if(crcStr != null){
            return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr, "严重错误,上行数据CRC检查失败," + crcStr, null))} ;
         }
         rtuAddr = cp.parseRtuAddr(upBuffer) ;
         protocolVersion = cp.parseVersion(upBuffer) ;
         upCode = cp.parseCode(upBuffer) ;
         upCode = cp.parseCode(upBuffer, p206TrueUgFalse) ;
         if(upCode == null){
            return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr, "严重错误,未能从上行数据中解析出功能码!", null))} ;
         }
         //Integer dataLen = cp.parseFrameLen(upBuffer) ;
         Data upData = new Data() ;
         upData.setRtuAddr(rtuAddr) ;
         upData.setProtocol(ProtocolConstantV206V2.protocolName);
@@ -100,12 +103,14 @@
         }else{
            return codeParse.parse(isLowPower, this.upCpParams, new CodeParseCallback(){
               @Override
               public void callback(Boolean flag) {
               public void callback(Boolean flag, Object codeData) {
                  reportOrResponse_trueOrFalse = flag ;
                  rtuAddrInData = dV2.getRtuAddr() ;
                  codeDataGrp[0] = codeData ;
               }
               @Override
               public void notify(NotifyInfo ...infos) {
                  notify.notify(rtuAddr, ProtocolConstantV206V1.protocolName, ProtocolConstantV206V1.protocolVer, infos);
               }
            });
         }
@@ -114,7 +119,7 @@
         isFail = true ;
         return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr, "严重错误,分析Rtu数据出错!数据为:" + upHex + (e.getMessage() == null?"":(",出错信息:" + e.getMessage())), e))} ;
      } finally{
         callback.callback(rtuAddr, upCode, CodeV2.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr);
         callback.callback(rtuAddr, upCode, CodeV2.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr, codeDataGrp[0]);
      }
   }