通信中间件增加命令数据解析回调,传回功能码数据,当前以实现远程升级功能需求
| | |
| | | * 设置上行数据类型,上报数据:true,命令应答:false,其他(如心跳、链路维持):null |
| | | * 取得数据中的rtuAddr |
| | | * @param reportOrResponse_trueOrFalse 上报是true,命令响应是false |
| | | * @param codeData 功能对应的数据对象 |
| | | */ |
| | | void callback(Boolean reportOrResponse_trueOrFalse) ; |
| | | void callback(Boolean reportOrResponse_trueOrFalse, Object codeData) ; |
| | | |
| | | /** |
| | | * 只有协议解析器才知道RTU真实的状态,所认提供此接口,向外通知设备的一些状态 |
| | |
| | | * @param reportOrResponse_trueOrFalse 上行数据是主动上报还是命令结果 |
| | | * @param parseFail 上行数据解析是否失败 |
| | | * @param rtuAddrInData 上行数据中在协议数据中的Rtu地址, |
| | | * @param codeData 功能对应的数据对象 |
| | | * “修改RTU终端管理配置参数”命令的返回数据,其协议头中的Rtu地址与数据中的Rtu地址不一样, |
| | | * 如果RTU不能关闭网络,那么sessionCach中的Rtu地址总是用修改前的Rtu地址,使得以后上行数据的不能找到缓存中的Session |
| | | */ |
| | | void callback(String rtuAddr, |
| | | String code, |
| | | String codeName, |
| | | String upHex, |
| | | Boolean reportOrResponse_trueOrFalse, |
| | | boolean parseFail, |
| | | String rtuAddrInData) ; |
| | | String code, |
| | | String codeName, |
| | | String upHex, |
| | | Boolean reportOrResponse_trueOrFalse, |
| | | boolean parseFail, |
| | | String rtuAddrInData, |
| | | Object ...codeData) ; |
| | | } |
| | |
| | | this.clear(); |
| | | boolean isFail = false ; |
| | | String upCode = null ; |
| | | Object[] codeDataGrp = {null}; |
| | | try{ |
| | | CommonV1 cp = new CommonV1() ; |
| | | Boolean p206TrueUgFalse = cp.protocolType_p206TrueUgFalse(upBuffer) ; |
| | |
| | | }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 = dV1.getRtuAddr() ; |
| | | codeDataGrp[0] = codeData ; |
| | | } |
| | | @Override |
| | | public void notify(NotifyInfo ...infos) { |
| | |
| | | } finally{ |
| | | if(upCode != null){ |
| | | //CRC验证失败时,upCode为null,此时不进行回调 |
| | | callback.callback(rtuAddr, upCode, CodeV1.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr); |
| | | callback.callback(rtuAddr, upCode, CodeV1.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr, codeDataGrp[0]); |
| | | } |
| | | } |
| | | } |
| | |
| | | //低功耗时,尽快发送 |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{confirmCommand, midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd81Vo cdData = (DataCd81Vo)((DataV1)para.data.getSubData()).subData ; |
| | | if(cdData.stateVo != null && cdData.stateVo.valveState != null){ |
| | |
| | | } |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{confirmCommand, midRs} ; |
| | | } |
| | | /** |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd84Vo cdData = (DataCd84Vo)((DataV1)para.data.getSubData()).subData ; |
| | | if(CommonV1.isCloseValveType(cdData.opType)){ |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd92Vo subData = (DataCd92Vo)((DataV1)para.data.getSubData()).subData ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd93Vo subData = (DataCd93Vo)((DataV1)para.data.getSubData()).subData ; |
| | | callback.notify(new ValveStateInfo(!subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ;//升级的,不认为是命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd960XVo subData = (DataCd960XVo)((DataV1)para.data.getSubData()).subData ; |
| | | callback.notify(new UpgradeStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ;//升级的,不认为是命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd960XVo subData = (DataCd960XVo)((DataV1)para.data.getSubData()).subData ; |
| | | callback.notify(new UpgradeStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ;//升级的,不认为是命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd960XVo subData = (DataCd960XVo)((DataV1)para.data.getSubData()).subData ; |
| | | callback.notify(new UpgradeStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd97Vo subData = (DataCd97Vo)((DataV1)para.data.getSubData()).subData ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd98Vo subData = (DataCd98Vo)((DataV1)para.data.getSubData()).subData ; |
| | | callback.notify(new ValveStateInfo(!subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd99Vo subData = (DataCd99Vo)((DataV1)para.data.getSubData()).subData ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCdA0Vo subData = (DataCdA0Vo)((DataV1)para.data.getSubData()).subData ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCdC0Vo cdData = (DataCdC0Vo)((DataV1)para.data.getSubData()).subData ; |
| | | if(cdData.stateVo != null && cdData.stateVo.valveState != null){ |
| | |
| | | boolean isFail = false ; |
| | | String upCode = null ; |
| | | Short protocolVersion = null ; |
| | | Object[] codeDataGrp = {null}; |
| | | try{ |
| | | CommonV2 cp = new CommonV2() ; |
| | | Boolean p206TrueUgFalse = cp.protocolType_p206TrueUgFalse(upBuffer) ; |
| | |
| | | }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) { |
| | |
| | | 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]); |
| | | } |
| | | } |
| | | |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd02Vo cdData = (DataCd02Vo)((DataV2)para.data.getSubData()).subData ; |
| | | if(cdData.stateVo != null && cdData.stateVo.valveState != null){ |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd81Vo cdData = (DataCd81Vo)((DataV2)para.data.getSubData()).subData ; |
| | | if(cdData.stateVo != null && cdData.stateVo.valveState != null){ |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | Object subData = ((DataV2)para.data.getSubData()).subData ; |
| | | if(subData instanceof DataCd83OpenVo){ |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd84Vo cdData = (DataCd84Vo)((DataV2)para.data.getSubData()).subData ; |
| | | if(CommonV2.isCloseValveType(cdData.opType)){ |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V2.CodeV2; |
| | | import com.dy.common.mw.protocol.p206V2.CommonV2; |
| | | import com.dy.common.mw.protocol.p206V2.DataV2; |
| | | import com.dy.common.mw.protocol.p206V2.ParseParamsForUpV2; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd92Vo subData = (DataCd92Vo)((DataV2)para.data.getSubData()).subData ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd93Vo subData = (DataCd93Vo)((DataV2)para.data.getSubData()).subData ; |
| | | callback.notify(new ValveStateInfo(!subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ;//升级的,不认为是命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd960XVo subData = (DataCd960XVo)((DataV2)para.data.getSubData()).subData ; |
| | | callback.notify(new UpgradeStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ;//升级的,不认为是命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd960XVo subData = (DataCd960XVo)((DataV2)para.data.getSubData()).subData ; |
| | | callback.notify(new UpgradeStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ;//升级的,不认为是命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd960XVo subData = (DataCd960XVo)((DataV2)para.data.getSubData()).subData ; |
| | | callback.notify(new UpgradeStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd97Vo subData = (DataCd97Vo)((DataV2)para.data.getSubData()).subData ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd98Vo subData = (DataCd98Vo)((DataV2)para.data.getSubData()).subData ; |
| | | callback.notify(new ValveStateInfo(!subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd99Vo subData = (DataCd99Vo)((DataV2)para.data.getSubData()).subData ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCdA0Vo subData = (DataCdA0Vo)((DataV2)para.data.getSubData()).subData ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCdC0Vo cdData = (DataCdC0Vo)((DataV2)para.data.getSubData()).subData ; |
| | | if(cdData.stateVo != null && cdData.stateVo.valveState != null){ |
| | |
| | | this.clear(); |
| | | boolean isFail = false ; |
| | | String upCode = null ; |
| | | Object[] codeDataGrp = {null}; |
| | | try{ |
| | | CommonV202404 cp = new CommonV202404() ; |
| | | Boolean p202404TrueUgFalse = cp.protocolType_p206TrueUgFalse(upBuffer) ; |
| | |
| | | }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 = dV201.getRtuAddr() ; |
| | | codeDataGrp[0] = codeData ; |
| | | } |
| | | @Override |
| | | public void notify(NotifyInfo ...infos) { |
| | |
| | | isFail = true ; |
| | | return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "严重错误,分析Rtu数据出错!数据为:" + upHex + (e.getMessage() == null?"":(",出错信息:" + e.getMessage())), e))} ; |
| | | } finally{ |
| | | callback.callback(rtuAddr, upCode, CodeV202404.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr); |
| | | callback.callback(rtuAddr, upCode, CodeV202404.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr, codeDataGrp[0]); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1.DataV1; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd02Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | |
| | | //低功耗时,尽快发送 |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{confirmCommand, midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | //低功耗时,尽快发送 |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | callback.notify(new ValveStateInfo(true)) ; |
| | | } |
| | |
| | | //低功耗时,尽快发送 |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd81Vo cdData = (DataCd81Vo)((DataV202404)para.data.getSubData()).subData ; |
| | | if(cdData.statePump != null){ |
| | |
| | | //低功耗时,尽快发送 |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | |
| | | return new MidResult[]{confirmCommand, midRs} ; |
| | | } |
| | |
| | | //低功耗时,尽快发送 |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | if(para.data != null && ((DataV202404)para.data.getSubData()).subData != null){ |
| | | callback.notify(new ValveStateInfo(true)); |
| | | } |
| | |
| | | //低功耗时,尽快发送 |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | if(para.data != null && ((DataV202404)para.data.getSubData()).subData != null){ |
| | | callback.notify(new ValveStateInfo(false)); |
| | | } |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | //低功耗时,尽快发送 |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{confirmCommand, midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd92_A2Vo subData = (DataCd92_A2Vo)((DataV202404)para.data.getSubData()).subData ; |
| | | //opResult ;//开启泵/阀结果: 0x00:成功 0x81:失败 |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd93_A3Vo subData = (DataCd93_A3Vo)((DataV202404)para.data.getSubData()).subData ; |
| | | //opResult ;//关泵/阀结果: 0x00:成功 0x81:失败 |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ;//升级的,不认为是命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd960XVo subData = (DataCd960XVo)((DataV202404)para.data.getSubData()).subData ; |
| | | callback.notify(new UpgradeStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ;//升级的,不认为是命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd960XVo subData = (DataCd960XVo)((DataV202404)para.data.getSubData()).subData ; |
| | | callback.notify(new UpgradeStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ;//升级的,不认为是命令应答 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd960XVo subData = (DataCd960XVo)((DataV202404)para.data.getSubData()).subData ; |
| | | callback.notify(new UpgradeStateInfo(subData.success)); |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | //低功耗时,尽快发送 |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCdC2Vo subData = (DataCdC2Vo)((DataV202404)para.data.getSubData()).subData ; |
| | | // public Byte opType2 ;//开启关闭:0: 开启 -1:关闭 |
| | |
| | | @JSONField(serialize = false) |
| | | public static final int STATE_FAIL = 4 ;//4-升级失败(多包死) |
| | | @JSONField(serialize = false) |
| | | public static final int STATE_FAILOFFLINE = 5 ;//4-升级失败(离线) |
| | | public static final int STATE_FAILOFFLINE = 5 ;//5-升级失败(离线) |
| | | @JSONField(serialize = false) |
| | | public static final int STATE_FAILOPEN = 6 ;//4-升级失败(阀开) |
| | | public static final int STATE_FAILOPEN = 6 ;//6-升级失败(阀开) |
| | | @JSONField(serialize = false) |
| | | public static final int STATE_FAILRTU = 7 ;//7-升级失败(RTU自己失败) |
| | | @JSONField(serialize = false) |
| | | public static final int RAMADDRADD = 0x200 ;//程序存储内存在址增量 |
| | | |
| | | public String rtuAddr ; |
| | | public int state ;// -1-离线,0-未开始,1-升级中,2-升级成功,3-升级失败(1包死),4-升级失败(非1包死),5-升级失败(离线),6-升级失败(阀开) |
| | | public int state ;// -1-离线,0-未开始,1-升级中,2-升级成功,3-升级失败(1包死),4-升级失败(非1包死),5-升级失败(离线),6-升级失败(阀开),7-升级失败(RTU) |
| | | public int totalPackage ;// 总包数 |
| | | public int currentPackage ;// 当前下发升级包数 |
| | | public int currentRamAddr ;// 当前下发升级包RTU存储地址 |
| | |
| | | return "离线失败"; |
| | | case STATE_FAILOPEN: |
| | | return "阀开失败"; |
| | | case STATE_FAILRTU: |
| | | return "RTU失败"; |
| | | default: |
| | | return "未知"; |
| | | } |
| | |
| | | * @param code |
| | | * @param softData |
| | | * @param callbackCom |
| | | * @param objects |
| | | */ |
| | | public void trigger(String code, |
| | | String protocolName, |
| | | Short protocolVersion, |
| | | byte[][] softData, |
| | | Callback callbackCom){ |
| | | Callback callbackCom, |
| | | Object ...objects){ |
| | | return ; |
| | | } |
| | | |
| | |
| | | }else{ |
| | | MidResult[] midRs = dri.parseData(ServerProperties.isLowPower, rtuAddrAtHead, upBuf, upHex, new DriverParserDataCallback(){ |
| | | @Override |
| | | public void callback(String rtuAddrAtHead, String code, String codeName, String upHex, Boolean reportOrResponse_trueOrFalse, boolean parseFail, String rtuAddrInData) { |
| | | public void callback(String rtuAddrAtHead, |
| | | String code, |
| | | String codeName, |
| | | String upHex, |
| | | Boolean reportOrResponse_trueOrFalse, |
| | | boolean parseFail, |
| | | String rtuAddrInData, |
| | | Object ...objs) { |
| | | //更新终端状态 |
| | | if(rtuAddrInData != null && !rtuAddrInData.equals(rtuAddrAtHead)){ |
| | | //数据头中的RTU地址与数据中的RTU地址不一致,更换成数据中的RTU地址 |
| | |
| | | @Override |
| | | public void exception(Exception e) { |
| | | } |
| | | }); |
| | | }, objs); |
| | | } |
| | | }) ; |
| | | if(midRs != null){ |
New file |
| | |
| | | package com.dy.rtuMw.server.upgrade; |
| | | |
| | | import com.dy.common.mw.protocol.Data; |
| | | import com.dy.common.mw.protocol.MidResult; |
| | | import com.dy.common.mw.protocol.MidResultFromRtu; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/1/23 11:19 |
| | | * @Description |
| | | */ |
| | | public class Test { |
| | | public static void main(String[] args) { |
| | | Date dt = new Date() ; |
| | | test(dt); |
| | | } |
| | | |
| | | private static void test(Object ...objects){ |
| | | if(objects !=null && objects.length > 0){ |
| | | Date dt = (Date)objects[0]; |
| | | dt = null; |
| | | } |
| | | } |
| | | } |
| | |
| | | * @param protocolVersion 上行数据对应的协议版本号 |
| | | * @param callbackCom 回调函数,处理下行命令 |
| | | */ |
| | | public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callbackCom){ |
| | | public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callbackCom, Object ...objects){ |
| | | if(task != null && !task.taskIsOver){ |
| | | this.task.trigger(rtuAddr, code, protocolName, protocolVersion, callbackCom); |
| | | this.task.trigger(rtuAddr, code, protocolName, protocolVersion, callbackCom, objects); |
| | | } |
| | | } |
| | | |
| | |
| | | import com.alibaba.fastjson2.annotation.JSONField; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol.CommandType; |
| | | import com.dy.common.mw.protocol.MidResult; |
| | | import com.dy.common.mw.protocol.MidResultFromRtu; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd960XVo; |
| | | import com.dy.common.softUpgrade.Com1601Vo; |
| | | import com.dy.common.softUpgrade.state.UpgradeRtu; |
| | | import com.dy.common.softUpgrade.state.UpgradeTaskVo; |
| | |
| | | * @param code |
| | | * @param softData |
| | | * @param callbackCom |
| | | * @param objects |
| | | */ |
| | | @Override |
| | | public void trigger(String code, String protocolName, Short protocolVersion, byte[][] softData, Callback callbackCom){ |
| | | public void trigger(String code, String protocolName, Short protocolVersion, byte[][] softData, Callback callbackCom, Object ...objects){ |
| | | if(!this.isOver){ |
| | | //升级未完成 |
| | | if(this.state == STATE_OFFLINE || this.state == STATE_UNSTART){ |
| | |
| | | } |
| | | }else if(code.equals(UpgradeCode.cd_9603)){ |
| | | //下发校验返回 |
| | | this.setStateAtReceiveRes9603Time() ; |
| | | this.setStateAtReceiveRes9603Time(objects) ; |
| | | callbackCom.call(createCommand1600(protocolName, protocolVersion));//下发复位指令,此指令无应答 |
| | | }else{ |
| | | //当前是升级中状态,并且升级未完成,收到了非960X系列功能码,则升级失败 |
| | |
| | | /** |
| | | * 设置1603指令返回时刻的状态 |
| | | */ |
| | | private void setStateAtReceiveRes9603Time(){ |
| | | private void setStateAtReceiveRes9603Time(Object ...objects){ |
| | | this.isOver = true ;//升级完成 |
| | | this.state = STATE_SUCCESS ; |
| | | if(objects != null && objects.length > 0){ |
| | | if(objects[0] instanceof com.dy.common.mw.protocol.p206V1.upVos.DataCd960XVo){ |
| | | com.dy.common.mw.protocol.p206V1.upVos.DataCd960XVo vo = (com.dy.common.mw.protocol.p206V1.upVos.DataCd960XVo)objects[0] ; |
| | | if(vo != null && !vo.success){ |
| | | this.state = STATE_FAILRTU ; |
| | | } |
| | | } else if(objects[0] instanceof com.dy.common.mw.protocol.p206V2.upVos.DataCd960XVo){ |
| | | com.dy.common.mw.protocol.p206V2.upVos.DataCd960XVo vo = (com.dy.common.mw.protocol.p206V2.upVos.DataCd960XVo)objects[0] ; |
| | | if(vo != null && !vo.success){ |
| | | this.state = STATE_FAILRTU ; |
| | | } |
| | | } else if(objects[0] instanceof com.dy.common.mw.protocol.p206V202404.upVos.DataCd960XVo){ |
| | | com.dy.common.mw.protocol.p206V202404.upVos.DataCd960XVo vo = (com.dy.common.mw.protocol.p206V202404.upVos.DataCd960XVo)objects[0] ; |
| | | if(vo != null && !vo.success){ |
| | | this.state = STATE_FAILRTU ; |
| | | } |
| | | } |
| | | } |
| | | this.lastDownDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; |
| | | this.lastDownDtAt = System.currentTimeMillis() ; |
| | | } |
| | |
| | | * @param code |
| | | * @param callbackCom |
| | | */ |
| | | public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callbackCom){ |
| | | public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callbackCom, Object ...objects){ |
| | | if(this.upgradeRtus != null && this.upgradeRtus.size() > 0 |
| | | && this.taskVo.rtuAddrList != null && this.taskVo.rtuAddrList.size() > 0){ |
| | | UpgradeRtu ugRtu = this.upgradeRtus.get(rtuAddr) ; |
| | |
| | | //初始态,说明升级任务设置以来,该RTU第一次上行数据 |
| | | if(this.curUgRunningRtuTotal <= UpgradeUnit.confVo.ugMaxRtuAtOnce){ |
| | | //当前正在升级的RTU数量还未受限 |
| | | ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom) ; |
| | | ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom, objects) ; |
| | | }else{ |
| | | //同时升级的RTU数量受限,等待下次机会 |
| | | //但先表明一下状态 |
| | |
| | | //根据上面逻辑, 说明必然在线了 |
| | | if(this.curUgRunningRtuTotal <= UpgradeUnit.confVo.ugMaxRtuAtOnce){ |
| | | //当前正在升级的RTU数量还未受限 |
| | | ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom) ; |
| | | ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom, objects) ; |
| | | }else{ |
| | | //同时升级的RTU数量受限,等待下次机会 |
| | | return ; |
| | | } |
| | | }else{ |
| | | //RTU已经处于升级过程中 |
| | | ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom) ; |
| | | ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom, objects) ; |
| | | } |
| | | }else{ |
| | | //没有设置同时升级的RTU最大数量的限制 |
| | | ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom) ; |
| | | ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom, objects) ; |
| | | } |
| | | } |
| | | } |
| | |
| | | * @param code |
| | | * @param callback |
| | | */ |
| | | public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callback){ |
| | | public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callback, Object ...objects){ |
| | | if(manager != null ){ |
| | | manager.trigger(rtuAddr, code, protocolName, protocolVersion, callback); |
| | | manager.trigger(rtuAddr, code, protocolName, protocolVersion, callback, objects); |
| | | } |
| | | } |
| | | |