|  |  | 
 |  |  | import com.dy.common.mw.protocol.*; | 
 |  |  | import com.dy.common.util.DateTime; | 
 |  |  |  | 
 |  |  | @AnnotationDriver(enable = true, name= ProtocolConstantV206V1.protocolName) | 
 |  |  | @AnnotationDriver(enable = true, | 
 |  |  |       name= ProtocolConstantV206V1.protocolName, | 
 |  |  |       version= ProtocolConstantV206V1.protocolVer) | 
 |  |  | public class DriverV1 extends Driver { | 
 |  |  |     | 
 |  |  |    private static String scanRootPackage = "com.dy.common.mw.protocol.p206V1" ; | 
 |  |  | 
 |  |  |       String upCode = null ; | 
 |  |  |       try{ | 
 |  |  |          CommonV1 cp = new CommonV1() ; | 
 |  |  |          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(ProtocolConstantV206V1.protocolName, rtuAddr, "严重错误,上行数据CRC检查失败," + crcStr, null))} ; | 
 |  |  |          } | 
 |  |  |          rtuAddr = cp.parseRtuAddr(upBuffer) ; | 
 |  |  |          upCode = cp.parseCode(upBuffer) ; | 
 |  |  |          upCode = cp.parseCode(upBuffer, p206TrueUgFalse) ; | 
 |  |  |          if(upCode == null){ | 
 |  |  |             return new MidResult[]{(new MidResultError(ProtocolConstantV206V1.protocolName, rtuAddr, "严重错误,未能从上行数据中解析出功能码!", null))} ; | 
 |  |  |          } | 
 |  |  |          //Integer dataLen = cp.parseFrameLen(upBuffer) ; | 
 |  |  |          Data upData = new Data() ; | 
 |  |  |          upData.setRtuAddr(rtuAddr) ; | 
 |  |  |          upData.setProtocol(ProtocolConstantV206V1.protocolName); | 
 |  |  | 
 |  |  |          upData.setSubData(dV1) ; | 
 |  |  |           | 
 |  |  |          this.upCpParams.setValue(ProtocolConstantV206V1.protocolName, | 
 |  |  |                ProtocolConstantV206V1.protocolVer, | 
 |  |  |                rtuAddr,  | 
 |  |  |                upCode, | 
 |  |  |                upHex,  | 
 |  |  | 
 |  |  |                   reportOrResponse_trueOrFalse = flag ; | 
 |  |  |                   rtuAddrInData = dV1.getRtuAddr() ; | 
 |  |  |                } | 
 |  |  |                @Override | 
 |  |  |                public void notify(NotifyInfo ...infos) { | 
 |  |  |                   notify.notify(rtuAddr, ProtocolConstantV206V1.protocolName, ProtocolConstantV206V1.protocolVer, infos); | 
 |  |  |                } | 
 |  |  |             }); | 
 |  |  |          } | 
 |  |  | 				 | 
 |  |  |       } catch (Exception e) { | 
 |  |  |          isFail = true ; | 
 |  |  |          return new MidResult[]{(new MidResultError(ProtocolConstantV206V1.protocolName, rtuAddr, "严重错误,分析Rtu数据出错!数据为:" + upHex + (e.getMessage() == null?"":(",出错信息:" + e.getMessage())), e))} ; | 
 |  |  |       } finally{ | 
 |  |  |          callback.callback(rtuAddr, upCode, CodeV1.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr); | 
 |  |  |          if(upCode != null){ | 
 |  |  |             //CRC验证失败时,upCode为null,此时不进行回调 | 
 |  |  |             callback.callback(rtuAddr, upCode, CodeV1.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  |  | 
 |  |  | 
 |  |  |          this.downCpParams.setValue( | 
 |  |  |                RtuResultSendWebUrl, | 
 |  |  |                ProtocolConstantV206V1.protocolName, | 
 |  |  |                command.protocolVersion==null?ProtocolConstantV206V1.protocolVer:command.protocolVersion, | 
 |  |  |                rtuAddr,  | 
 |  |  |                command.getId(), | 
 |  |  |                commandCode,  |