|  |  | 
 |  |  |     private short heartBeatVal = 1; | 
 |  |  |     private boolean resetFlag = false; | 
 |  |  |  | 
 |  |  |     private Integer lastRow; | 
 |  |  |     private Integer lastBay; | 
 |  |  |     private Integer lastLev; | 
 |  |  |  | 
 |  |  |     public SteThread(SteSlave slave) { | 
 |  |  |         this.slave = slave; | 
 |  |  |     } | 
 |  |  | 
 |  |  |         steProtocol.setSteNo(slave.getId().shortValue()); | 
 |  |  |         steProtocol.setMode((short) 0); | 
 |  |  |         steProtocol.setStatus(SteStatusType.OFF_LINE); | 
 |  |  |         steProtocol.setTaskNo(0); | 
 |  |  |         steProtocol.setTaskNo((short) 0); | 
 |  |  |         steProtocol.setExecute(false); | 
 |  |  |         steProtocol.setWaiting(false); | 
 |  |  |     } | 
 |  |  | 
 |  |  |             if (result.IsSuccess) { | 
 |  |  |                 if (null == steProtocol) { | 
 |  |  |                     steProtocol = new SteProtocol(); | 
 |  |  |                     steProtocol.setSteNo(slave.getId().shortValue()); | 
 |  |  |                 } | 
 |  |  |                 steProtocol.setSteNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 0)); | 
 |  |  | //                steProtocol.setSteNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 0)); | 
 |  |  |                 steProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, 2)); | 
 |  |  |                 steProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 4)); | 
 |  |  |                 OperateResultExOne<Boolean> executeRes = siemensS7Net.ReadBool("V2001.0"); | 
 |  |  | 
 |  |  |                 steProtocol.setPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 18)); | 
 |  |  |                 steProtocol.setLoad(siemensS7Net.getByteTransform().TransInt16(result.Content, 20)); | 
 |  |  |                 steProtocol.setTrack(siemensS7Net.getByteTransform().TransInt16(result.Content, 22)); | 
 |  |  |                 steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 24)); | 
 |  |  |                 steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 24)); | 
 |  |  |                 steProtocol.setTaskType(siemensS7Net.getByteTransform().TransInt16(result.Content, 28)); | 
 |  |  |                 steProtocol.setRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 30)); | 
 |  |  |                 steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 32)); | 
 |  |  | 
 |  |  |                 // 根据实时信息更新数据库 | 
 |  |  |                 BasSteService service = SpringUtils.getBean(BasSteService.class); | 
 |  |  |                 if (null != service) { | 
 |  |  |                     // 同步pakMk | 
 |  |  |                     BasSte one = service.selectById(slave.getId()); | 
 |  |  |                     if (one != null) { | 
 |  |  |                         steProtocol.setPakMk(one.getPakMk()); | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |                     BasSte basSte = new BasSte(); | 
 |  |  |                     basSte.setSteNo(slave.getId()); | 
 |  |  |                     if (!service.updateById(steProtocol.toSqlModel(basSte))){ | 
 |  |  | 
 |  |  |                 throw new CoolException(MessageFormat.format( "穿梭车plc状态信息失败 ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort())); | 
 |  |  |             } | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  | //            e.printStackTrace(); | 
 |  |  |             OutputQueue.STE.offer(MessageFormat.format("【{0}】读取穿梭车plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); | 
 |  |  |             log.error("读取穿梭车plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); | 
 |  |  | //            log.error("读取穿梭车plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); | 
 |  |  |             initSte(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  | 
 |  |  |         OperateResult result = null; | 
 |  |  |         // 开始任务 | 
 |  |  |         if (!command.getComplete()) { | 
 |  |  |  | 
 |  |  |             // 1.任务号 | 
 |  |  |             OperateResult result0 = siemensS7Net.Write("V998", command.getTaskNo().shortValue()); | 
 |  |  |             try { | 
 |  |  |                 Thread.sleep(200); | 
 |  |  |             } catch (InterruptedException e) { | 
 |  |  |                 e.printStackTrace(); | 
 |  |  |             } | 
 |  |  |             // 作业 | 
 |  |  |             if (command.getTaskMode() != 0) { | 
 |  |  |                 // 1.任务号 | 
 |  |  |                 OperateResult result0 = siemensS7Net.Write("V998", command.getTaskNo().shortValue()); | 
 |  |  |                 try { | 
 |  |  |                     Thread.sleep(200); | 
 |  |  |                 } catch (InterruptedException e) { | 
 |  |  |                     e.printStackTrace(); | 
 |  |  |                 } | 
 |  |  |                 // 2.作业 | 
 |  |  |                 OperateResult result1 = siemensS7Net.Write("V1000", command.getTaskMode()); | 
 |  |  |                 // 3.确认开始任务 | 
 |  |  | 
 |  |  |  | 
 |  |  |         // 任务完成 | 
 |  |  |         } else { | 
 |  |  |             siemensS7Net.Write("V998", (short) 0); | 
 |  |  |             siemensS7Net.Write("V1000", (short) 0); | 
 |  |  |             result = siemensS7Net.Write("V2000.1", true); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public void modifyPos(Integer row, Integer bay, Integer lev) { | 
 |  |  |         this.lastRow = row; | 
 |  |  |         this.lastBay = bay; | 
 |  |  |         this.lastLev = lev; | 
 |  |  |         BasSteService service = SpringUtils.getBean(BasSteService.class); | 
 |  |  |         if (!service.updatePos(this.slave.getId(), row, bay, lev)) { | 
 |  |  |             log.error("更新{}号穿梭车定位失败 ===>> 排:【{}】, 列:【{}】,层:【{}】", this.slave.getId(), row, bay, lev); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public boolean confirmPos() { | 
 |  |  |         if (this.lastRow != null && this.lastRow != 0) { | 
 |  |  |             if (this.lastBay != null && this.lastBay != 0) { | 
 |  |  |                 if (this.lastLev != null && this.lastLev != 0) { | 
 |  |  |                     BasSteService service = SpringUtils.getBean(BasSteService.class); | 
 |  |  |                     BasSte basSte = service.selectById(slave.getId()); | 
 |  |  |                     if (basSte != null) { | 
 |  |  |                         // 更新plc数据块 | 
 |  |  |                         short[] arr = new short[] {this.lastRow.shortValue(), this.lastBay.shortValue(), this.lastLev.shortValue()}; | 
 |  |  |                         OperateResult result = siemensS7Net.Write("V1002", arr); | 
 |  |  |                         if (result.IsSuccess) { | 
 |  |  |                             // 更新数据库 | 
 |  |  |                             if (service.updatePos(this.lastRow, this.lastBay, this.lastLev) > 0) { | 
 |  |  |                                 this.lastRow = null; | 
 |  |  |                                 this.lastBay = null; | 
 |  |  |                                 this.lastLev = null; | 
 |  |  |                                 return true; | 
 |  |  |                             } else { | 
 |  |  |                                 log.error("{}号穿梭车修改数据库定位失败!!!", slave.getId()); | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |         BasSteService service = SpringUtils.getBean(BasSteService.class); | 
 |  |  |         BasSte basSte = service.selectById(slave.getId()); | 
 |  |  |         if (basSte != null) { | 
 |  |  |             // 更新plc数据块 | 
 |  |  |             short[] arr = new short[] {basSte.getRow().shortValue(), basSte.getBay().shortValue(), basSte.getLev().shortValue()}; | 
 |  |  |             OperateResult result = siemensS7Net.Write("V1002", arr); | 
 |  |  |             if (result.IsSuccess) { | 
 |  |  |                 // 更新数据库 | 
 |  |  |                 if (service.updatePakMk(this.slave.getId(), "N")) { | 
 |  |  |                     return true; | 
 |  |  |                 } else { | 
 |  |  |                     log.error("{}号穿梭车修改数据库定位失败!!!", slave.getId()); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return false; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public boolean modifyPosHandle(Integer row, Integer bay, Integer lev) { | 
 |  |  |         short[] arr = new short[] {row.shortValue(), bay.shortValue(), lev.shortValue()}; | 
 |  |  |         OperateResult result = siemensS7Net.Write("V1002", arr); | 
 |  |  |         if (!result.IsSuccess) { | 
 |  |  |             log.error("更新{}号穿梭车定位失败 ===>> 排:【{}】, 列:【{}】,层:【{}】", this.slave.getId(), row, bay, lev); | 
 |  |  |             return false; | 
 |  |  |         } | 
 |  |  |         BasSteService service = SpringUtils.getBean(BasSteService.class); | 
 |  |  |         if (!service.updatePos(this.slave.getId(), row, bay, lev)) { | 
 |  |  |             log.error("更新{}号穿梭车定位失败 ===>> 排:【{}】, 列:【{}】,层:【{}】", this.slave.getId(), row, bay, lev); | 
 |  |  |             return false; | 
 |  |  |         } | 
 |  |  |         return true; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | //    public void modifyPos(int wrkNo, int row, int bay, int lev) { | 
 |  |  | //        BasSteService service = SpringUtils.getBean(BasSteService.class); | 
 |  |  | //        if (!service.updatePos(wrkNo,this.slave.getId(), row, bay, lev)) { | 
 |  |  | //            log.error("更新{}号穿梭车定位失败 ===>> 排:【{}】, 列:【{}】,层:【{}】", this.slave.getId(), row, bay, lev); | 
 |  |  | //        } | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |     /******************************************************************************************/ | 
 |  |  |     /**************************************** 测试专用 *****************************************/ |