| | |
| | | //升级任务未完成 |
| | | //工作1:判断是否无任何一个RTU进行过升级,并且达到时限,则认为当前升级任务完成 |
| | | //-1:无一RTU升级且超时,0:无RTU升级但未超时等待,1有RTU升级正常执行 |
| | | int temp = 1 ; |
| | | //int temp = this.task.countNoOneRtuUpgradeInDuration() ; |
| | | //int temp = 1 ; |
| | | int temp = this.task.countNoOneRtuUpgradeInDuration() ; |
| | | if(temp == -1){ |
| | | //当前没有RTU进行过升级,而且超时了,认为任务已经完成 |
| | | this.task.taskIsOver = true ; |
| | | //任务已经完成 |
| | | this.stop(); |
| | | }else if(temp == 1){ |
| | | //当前有RTU进行过升级 |
| | | //工作2:统计当前正在升级的RTU数量,为同时升级数量限制做准备 |
| | | this.task.countRunningRtuCount() ; |
| | | |
| | |
| | | //工作4:统计是否全部升级完成 |
| | | //this.task.taskIsOver = this.task.countIsAllOver() ; |
| | | }else if(temp == 0){ |
| | | //不作为 |
| | | //当前没有一个RTU进行过升级,也没有超时,不作为 |
| | | } |
| | | if(this.task.taskIsOver){ |
| | | if(!this.task.taskOverType.equals(UpgradeTask.TaskOverType_Force)){ |
| | |
| | | //rtu不在升级之列 |
| | | return ; |
| | | } |
| | | } |
| | | if(ugRtu != null){ |
| | | }else{ |
| | | if(ugRtu.isOver){ |
| | | //当前RTU已经升级完成,无需再升级 |
| | | return; |
| | |
| | | ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom) ; |
| | | } |
| | | } |
| | | }else{ |
| | | //rtu不在升级之列 |
| | | return ; |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | /////////////////////////////////////////////////////////// |
| | | //以下方法为内部服务,不对外提供服务 |
| | | // |
| | | // 以下方法为内部服务,不对外提供服务 |
| | | // |
| | | /////////////////////////////////////////////////////////// |
| | | |
| | | /** |
| | |
| | | notifyStateInterval: 升级状态通知间隔(秒) |
| | | --> |
| | | <upgrade enable="true" |
| | | noOneRtuUpgradeMaxDuration="600" |
| | | noOneRtuUpgradeMaxDuration="1200" |
| | | failTryTimes="1" |
| | | ugMaxRtuAtOnce="1000" |
| | | rtuOffLineWaitDuration="1200" |
| | |
| | | this.startUnits() ; |
| | | |
| | | if(ServerProperties.argRtuAddr != null && !ServerProperties.argRtuAddr.trim().equals("")){ |
| | | System.out.println("应用配置RTU地址:" + ServerProperties.rtuAddr) ; |
| | | }else{ |
| | | System.out.println("应用参数RTU地址:" + ServerProperties.argRtuAddr) ; |
| | | System.out.println("参数RTU地址:" + ServerProperties.argRtuAddr) ; |
| | | ServerProperties.rtuAddr = ServerProperties.argRtuAddr ; |
| | | }else{ |
| | | System.out.println("配置RTU地址:" + ServerProperties.rtuAddr) ; |
| | | } |
| | | |
| | | System.out.println("启动一包死:" + (ServerProperties.argOneDie==null?"否":(ServerProperties.argOneDie?"是":"否"))) ; |
| | | System.out.println("启动多包死:" + (ServerProperties.argMultiDie==null?"否":(ServerProperties.argMultiDie?"是":"否"))) ; |
| | | |
| | |
| | | */ |
| | | @Override |
| | | public void messageSent(IoSession session, Object message) throws Exception { |
| | | log.info("网络发送了数据," |
| | | + (session==null?"":(session.getRemoteAddress() != null?("中间件网址是:" + session.getRemoteAddress().toString()):"")) ); |
| | | if(message != null){ |
| | | byte[] bs = (byte[])message ; |
| | | log.info("网络发送了数据:" + ByteUtil.bytes2Hex(bs, true)); |
| | | log.info("\n网络发送了数据," |
| | | + (session==null?"":(session.getRemoteAddress() != null?("中间件网址是:" + session.getRemoteAddress().toString()):"")) |
| | | + ("\n数据:" + ByteUtil.bytes2Hex(bs, true))); |
| | | } |
| | | } |
| | | |
| | |
| | | //升级配置 |
| | | if(ServerProperties.argOneDie){ |
| | | UpHeartBeat.upHeartBeat = true ;//使能上行心跳 |
| | | }else{ |
| | | UpCd9601.upData() ; |
| | | } |
| | | UpCd9601.upData() ; |
| | | }else if(cd.equals("1602")){ |
| | | //升级数据 |
| | | UpCd9602.upData() ; |
| | | count9602 ++ ; |
| | | if(ServerProperties.argMultiDie){ |
| | | if(count9602 > 10){ |
| | | int random = CreateRandom.create_between(10, 100) ; |
| | | if(random > 50){ |
| | | UpHeartBeat.upHeartBeat = true ;//使能上行心跳 |
| | | }else{ |
| | | UpCd9602.upData() ; |
| | | } |
| | | }else{ |
| | | UpCd9602.upData() ; |
| | | } |
| | | }else{ |
| | | UpCd9602.upData() ; |
| | | } |
| | | }else if(cd.equals("1603")){ |
| | | //升级校验 |