|  |  |  | 
|---|
|  |  |  | import java.net.URI; | 
|---|
|  |  |  | import java.net.URL; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @AnnotationDriver(name= ProtocolConstantV206V1_0_0.protocolName) | 
|---|
|  |  |  | @AnnotationDriver(enable = true, name= ProtocolConstantV206V1_0_0.protocolName) | 
|---|
|  |  |  | public class DriverV1_0_1 extends Driver { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private static String scanRootPackage = "com.dy.common.mw.protocol.p206V1_0_0." ; | 
|---|
|  |  |  | private static String scanRootPackage = "com.dy.common.mw.protocol.p206V1_0_0" ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //在Driver中是单例,随Driver的单例对象在单线程中运行 | 
|---|
|  |  |  | private ParseParamsForUpV1_0_1 upCpParams ; | 
|---|
|  |  |  | 
|---|
|  |  |  | downCpParams = new ParseParamsForDownV1_0_1() ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 清空自己 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void clear() { | 
|---|
|  |  |  | if(this.upCpParams != null){ | 
|---|
|  |  |  | this.upCpParams.clear(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(this.downCpParams != null){ | 
|---|
|  |  |  | this.downCpParams.clear(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.reportOrResponse_trueOrFalse = null ; | 
|---|
|  |  |  | this.rtuAddrInData = null ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 扫描识别功能码注解类 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void scanAnnotationCode() throws Exception{ | 
|---|
|  |  |  | if(!scanRootPackage.endsWith(".")){ | 
|---|
|  |  |  | scanRootPackage += "." ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | URL url = this.getClass().getResource("/" + scanRootPackage.replace('.', '/')); | 
|---|
|  |  |  | URI uri = new URI(url.toString()); | 
|---|
|  |  |  | super.doScanAnnotationCode(this, ProtocolConstantV206V1_0_0.protocolName, uri, scanRootPackage) ; | 
|---|
|  |  |  | super.doScanAnnotationCode(this, ProtocolConstantV206V1_0_0.protocolName, scanRootPackage) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public MidResult[] parseData(Boolean isLowPower, String rtuAddr, byte[] upBuffer, String upHex, DriverParserDataCallback callback, Object... params) { | 
|---|
|  |  |  | reportOrResponse_trueOrFalse = null ; | 
|---|
|  |  |  | this.clear(); | 
|---|
|  |  |  | boolean isFail = false ; | 
|---|
|  |  |  | String upCode = null ; | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | upData.setSubData(dV1_0_1) ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.upCpParams.clear(); | 
|---|
|  |  |  | this.upCpParams.setValue(ProtocolConstantV206V1_0_0.protocolName, | 
|---|
|  |  |  | this.upCpParams.setValue(ProtocolConstantV206V1_0_0.protocolName, | 
|---|
|  |  |  | rtuAddr, | 
|---|
|  |  |  | upCode, | 
|---|
|  |  |  | upHex, | 
|---|
|  |  |  | 
|---|
|  |  |  | isFail = true ; | 
|---|
|  |  |  | return new MidResult[]{(new MidResultError(ProtocolConstantV206V1_0_0.protocolName, rtuAddr, "严重错误,分析Rtu数据出错!数据为:" + upHex + (e.getMessage() == null?"":(",出错信息:" + e.getMessage())), e))} ; | 
|---|
|  |  |  | } finally{ | 
|---|
|  |  |  | callback.callback(rtuAddr, upCode, upHex, reportOrResponse_trueOrFalse, isFail, rtuAddrInData); | 
|---|
|  |  |  | callback.callback(rtuAddr, upCode, CodeV1_0_1.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public MidResult[] createCommand(Boolean isLowPower, Command command, Object... params) { | 
|---|
|  |  |  | this.clear(); | 
|---|
|  |  |  | String RtuResultSendWebUrl = command.getRtuResultSendWebUrl() ; | 
|---|
|  |  |  | if(RtuResultSendWebUrl == null || RtuResultSendWebUrl.trim().equals("")){ | 
|---|
|  |  |  | return new MidResult[]{(new MidResultError(ProtocolConstantV206V1_0_0.protocolName, null, "严重错误,命令中rtu返回命令结果发向目的地web URL为空,不能构建任何命令!", null))} ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String rtuAddr = command.getRtuAddr() ; | 
|---|
|  |  |  | if(rtuAddr == null){ | 
|---|
|  |  |  | if(rtuAddr == null || rtuAddr.trim().equals("")){ | 
|---|
|  |  |  | return new MidResult[]{(new MidResultError(ProtocolConstantV206V1_0_0.protocolName, null, "严重错误,命令中Rtu地址为空,不能构建任何命令!", null))} ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | String commandCode = command.getCode() ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.downCpParams.clear(); | 
|---|
|  |  |  | this.downCpParams.setValue( | 
|---|
|  |  |  | RtuResultSendWebUrl, | 
|---|
|  |  |  | ProtocolConstantV206V1_0_0.protocolName, | 
|---|
|  |  |  | rtuAddr, | 
|---|
|  |  |  | command.getId(), | 
|---|