liurunyu
2025-04-30 959dcca95276888cd9c092d93d276ef9aa580aef
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V2;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V2.parse.TransparentDown;
import com.dy.common.util.DateTime;
@AnnotationDriver(enable = true,
@@ -60,6 +61,7 @@
      boolean isFail = false ;
      String upCode = null ;
      Short protocolVersion = null ;
      Object[] codeDataGrp = {null};
      try{
         CommonV2 cp = new CommonV2() ;
         Boolean p206TrueUgFalse = cp.protocolType_p206TrueUgFalse(upBuffer) ;
@@ -101,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, ProtocolConstantV206V2.protocolName, ProtocolConstantV206V2.protocolVer, infos);
               }
            });
         }
@@ -115,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]);
      }
   }
@@ -164,5 +168,44 @@
      }
   }
   /**
    * 构造下行透传数据(命令)
    * @param isLowPower 是否在低功耗环境下运行
    * @param command 命令
    * @return MidResult[]
    */
   @Override
   public MidResult[] transparentCommand(Boolean isLowPower, Command command, Object... params){
      this.clear();
      String RtuResultSendWebUrl = command.getRtuResultSendWebUrl() ;
      if(RtuResultSendWebUrl == null || RtuResultSendWebUrl.trim().equals("")){
         return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, null, "严重错误,命令中rtu返回命令结果发向目的地web URL为空,不能构建任何命令!", null))} ;
      }
      String rtuAddr = command.getRtuAddr() ;
      if(rtuAddr == null || rtuAddr.trim().equals("")){
         return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, null, "严重错误,命令中Rtu地址为空,不能构建任何命令!", null))} ;
      }
      try {
         String commandCode = command.getCode() ;
         this.downCpParams.setValue(
               RtuResultSendWebUrl,
               ProtocolConstantV206V2.protocolName,
               command.protocolVersion==null?ProtocolConstantV206V2.protocolVer:command.protocolVersion,
               rtuAddr,
               command.getId(),
               commandCode,
               command.getParam(),
               command.getAttachment());
         if(commandCode == null){
            return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr,  "严重错误,命令中功能码为空,不能构建任何命令!", null))} ;
         }else{
            return new TransparentDown().parse(isLowPower, this.downCpParams, null);
         }
      } catch (Exception e) {
         return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr,  "严重错误,构造下行数据出错!命令为:" + command.toString(), e))} ;
      }
   }
}