|  |  | 
 |  |  | import com.zy.core.thread.BarcodeThread; | 
 |  |  | import com.zy.core.thread.MelsecCrnThread; | 
 |  |  | import com.zy.core.thread.ScaleThread; | 
 |  |  | import com.zy.core.thread.SiemensCrnThread; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  | 
 |  |  |         CrnDetailVo vo = new CrnDetailVo(); | 
 |  |  |         for (CrnSlave crnSlave : slaveProperties.getCrn()) { | 
 |  |  |             if (crnSlave.getId().equals(crnNo)) { | 
 |  |  |                 MelsecCrnThread crnThread = (MelsecCrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId()); | 
 |  |  |                 SiemensCrnThread crnThread = (SiemensCrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId()); | 
 |  |  |                 CrnProtocol crnProtocol = crnThread.getCrnProtocol(); | 
 |  |  |                 vo.setCrnNo(crnNo); | 
 |  |  |                 vo.setWorkNo(crnProtocol.getTaskNo()); | 
 
 |  |  | 
 |  |  |                 res.add(map2); | 
 |  |  |             } else { | 
 |  |  |                 Map<String, Object> map3 = new HashMap<>(); | 
 |  |  |                 map3.put("floor", 2); | 
 |  |  |                 map3.put("floor", 3); | 
 |  |  |                 map3.put("modeVal", devpThread.ioModeOf1F3.id); | 
 |  |  |                 map3.put("modeDesc", devpThread.ioModeOf1F3.desc); | 
 |  |  |                 res.add(map3); | 
 
 |  |  | 
 |  |  |         // 初始化堆垛机线程 | 
 |  |  |         log.info("初始化堆垛机线程..................................................."); | 
 |  |  |         for (CrnSlave crn : slaveProperties.getCrn()) { | 
 |  |  |             CrnThread crnThread = new MelsecCrnThread(crn); | 
 |  |  |             CrnThread crnThread = new SiemensCrnThread(crn); | 
 |  |  |             new Thread((Runnable) crnThread).start(); | 
 |  |  |             SlaveConnection.put(SlaveType.Crn, crn.getId(), crnThread); | 
 |  |  |         } | 
 
 |  |  | 
 |  |  |     WAITING(10, "任务完成等待WCS确认"), | 
 |  |  |     PAUSE(11, "任务暂停"), | 
 |  |  |     SOS(99, "报警"), | 
 |  |  |     UNKNOW(100,"其他") | 
 |  |  |     ; | 
 |  |  |  | 
 |  |  |     public Integer id; | 
 
 |  |  | 
 |  |  |         } | 
 |  |  |         if (slave.getId() == 2 && this.ioModeOf1F3 != IoModeType.NONE) { | 
 |  |  |             if (!siemensS7Net.Write("DB100.300", this.ioModeOf1F3.id).IsSuccess) { | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线1F3入出库模式失败。输送线plc编号={1}", slave.getId())); | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线1F3入出库模式失败。输送线plc编号={2}", slave.getId())); | 
 |  |  |                 log.error("写入输送线1F3入出库模式失败。输送线plc编号={}", slave.getId()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if (slave.getId() == 2 && this.ioModeOf1F4 != IoModeType.NONE) { | 
 |  |  |             if (!siemensS7Net.Write("DB100.302", this.ioModeOf1F4.id).IsSuccess) { | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线1F4入出库模式失败。输送线plc编号={1}", slave.getId())); | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线1F4入出库模式失败。输送线plc编号={2}", slave.getId())); | 
 |  |  |                 log.error("写入输送线1F4入出库模式失败。输送线plc编号={}", slave.getId()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if (slave.getId() == 2 && this.ioModeOf2F1 != IoModeType.NONE) { | 
 |  |  |             if (!siemensS7Net.Write("DB100.304", this.ioModeOf2F1.id).IsSuccess) { | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线2F1入出库模式失败。输送线plc编号={1}", slave.getId())); | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线2F1入出库模式失败。输送线plc编号={2}", slave.getId())); | 
 |  |  |                 log.error("写入输送线2F1入出库模式失败。输送线plc编号={}", slave.getId()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if (slave.getId() == 2 && this.ioModeOf2F2 != IoModeType.NONE) { | 
 |  |  |             if (!siemensS7Net.Write("DB100.306", this.ioModeOf2F2.id).IsSuccess) { | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线2F2入出库模式失败。输送线plc编号={1}", slave.getId())); | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线2F2入出库模式失败。输送线plc编号={2}", slave.getId())); | 
 |  |  |                 log.error("写入输送线2F2入出库模式失败。输送线plc编号={}", slave.getId()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if (slave.getId() == 2 && this.ioModeOf3F1 != IoModeType.NONE) { | 
 |  |  |             if (!siemensS7Net.Write("DB100.308", this.ioModeOf3F1.id).IsSuccess) { | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线3F1入出库模式失败。输送线plc编号={1}", slave.getId())); | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线3F1入出库模式失败。输送线plc编号={2}", slave.getId())); | 
 |  |  |                 log.error("写入输送线3F1入出库模式失败。输送线plc编号={}", slave.getId()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if (slave.getId() == 2 && this.ioModeOf3F2 != IoModeType.NONE) { | 
 |  |  |             if (!siemensS7Net.Write("DB100.310", this.ioModeOf3F2.id).IsSuccess) { | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线3F2入出库模式失败。输送线plc编号={1}", slave.getId())); | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线3F2入出库模式失败。输送线plc编号={2}", slave.getId())); | 
 |  |  |                 log.error("写入输送线3F2入出库模式失败。输送线plc编号={}", slave.getId()); | 
 |  |  |             } | 
 |  |  |         } | 
 
 |  |  | 
 |  |  |   # 堆垛机1 | 
 |  |  |   crn[0]: | 
 |  |  |     id: 1 | 
 |  |  |     ip: 10.10.10.101 | 
 |  |  |     ip: 10.10.10.10 | 
 |  |  |     port: 102 | 
 |  |  |     rack: 0 | 
 |  |  |     slot: 0 | 
 |  |  | 
 |  |  |       devpPlcId: ${wcs-slave.devp[0].id} | 
 |  |  |       staNo: 102 | 
 |  |  |       row: 2 | 
 |  |  |       bay: 2 | 
 |  |  |       bay: 84 | 
 |  |  |       lev: 1 | 
 |  |  |     # 堆垛机入库站点2 | 
 |  |  |     crnInStn[1]: | 
 |  |  |       devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |       staNo: 112 | 
 |  |  |       row: 2 | 
 |  |  |       bay: 55 | 
 |  |  |       bay: 1 | 
 |  |  |       lev: 1 | 
 |  |  |     # 堆垛机入库站点3 | 
 |  |  |     crnInStn[2]: | 
 |  |  |       devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |       staNo: 202 | 
 |  |  |       row: 2 | 
 |  |  |       bay: 55 | 
 |  |  |       bay: 1 | 
 |  |  |       lev: 4 | 
 |  |  |     # 堆垛机入库站点 | 
 |  |  |     crnInStn[3]: | 
 |  |  |       devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |       staNo: 302 | 
 |  |  |       row: 2 | 
 |  |  |       bay: 55 | 
 |  |  |       bay: 1 | 
 |  |  |       lev: 7 | 
 |  |  |     # 堆垛机出库站点1 | 
 |  |  |     crnOutStn[0]: | 
 |  |  |       devpPlcId: ${wcs-slave.devp[0].id} | 
 |  |  |       staNo: 102 | 
 |  |  |       row: 2 | 
 |  |  |       bay: 2 | 
 |  |  |       bay: 84 | 
 |  |  |       lev: 1 | 
 |  |  |     # 堆垛机出库站点2 | 
 |  |  |     crnOutStn[1]: | 
 |  |  |       devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |       staNo: 112 | 
 |  |  |       row: 2 | 
 |  |  |       bay: 55 | 
 |  |  |       bay: 1 | 
 |  |  |       lev: 1 | 
 |  |  |     # 堆垛机出库站点3 | 
 |  |  |     crnOutStn[2]: | 
 |  |  |       devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |       staNo: 202 | 
 |  |  |       row: 2 | 
 |  |  |       bay: 55 | 
 |  |  |       bay: 1 | 
 |  |  |       lev: 4 | 
 |  |  |     # 堆垛机出库站点 | 
 |  |  |     crnOutStn[3]: | 
 |  |  |       devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |       staNo: 302 | 
 |  |  |       row: 2 | 
 |  |  |       bay: 55 | 
 |  |  |       bay: 1 | 
 |  |  |       lev: 7 | 
 |  |  |   # 堆垛机2 | 
 |  |  |   # 堆垛机1 | 
 |  |  |   crn[1]: | 
 |  |  |     id: 2 | 
 |  |  |     ip: 10.10.10.111 | 
 |  |  |     ip: 10.10.10.20 | 
 |  |  |     port: 102 | 
 |  |  |     rack: 0 | 
 |  |  |     slot: 0 | 
 |  |  | 
 |  |  |       devpPlcId: ${wcs-slave.devp[0].id} | 
 |  |  |       staNo: 106 | 
 |  |  |       row: 7 | 
 |  |  |       bay: 2 | 
 |  |  |       bay: 84 | 
 |  |  |       lev: 1 | 
 |  |  |     # 堆垛机入库站点2 | 
 |  |  |     crnInStn[1]: | 
 |  |  |       devpPlcId: ${wcs-slave.devp[0].id} | 
 |  |  |       staNo: 116 | 
 |  |  |       row: 7 | 
 |  |  |       bay: 55 | 
 |  |  |       bay: 1 | 
 |  |  |       lev: 1 | 
 |  |  |     # 堆垛机入库站点3 | 
 |  |  |     crnInStn[2]: | 
 |  |  |       devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |       staNo: 205 | 
 |  |  |       row: 7 | 
 |  |  |       bay: 55 | 
 |  |  |       bay: 1 | 
 |  |  |       lev: 4 | 
 |  |  |     # 堆垛机入库站点4 | 
 |  |  |     crnInStn[3]: | 
 |  |  |       devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |       staNo: 305 | 
 |  |  |       row: 7 | 
 |  |  |       bay: 55 | 
 |  |  |       bay: 1 | 
 |  |  |       lev: 7 | 
 |  |  |     # 堆垛机出库站点1 | 
 |  |  |     crnOutStn[0]: | 
 |  |  |       devpPlcId: ${wcs-slave.devp[0].id} | 
 |  |  |       staNo: 106 | 
 |  |  |       row: 7 | 
 |  |  |       bay: 2 | 
 |  |  |       bay: 84 | 
 |  |  |       lev: 1 | 
 |  |  |     # 堆垛机出库站点2 | 
 |  |  |     crnOutStn[1]: | 
 |  |  | 
 |  |  |       devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |       staNo: 205 | 
 |  |  |       row: 7 | 
 |  |  |       bay: 55 | 
 |  |  |       bay: 1 | 
 |  |  |       lev: 4 | 
 |  |  |     # 堆垛机出库站点3 | 
 |  |  |     crnOutStn[3]: | 
 |  |  |       devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |       staNo: 305 | 
 |  |  |       row: 7 | 
 |  |  |       bay: 55 | 
 |  |  |       bay: 1 | 
 |  |  |       lev: 7 | 
 |  |  |   # 输送线1 | 
 |  |  |   devp[0]: | 
 
 |  |  | 
 |  |  |     "rackDescs": [ | 
 |  |  |         { | 
 |  |  |             "type": "rackDescs", | 
 |  |  |             "id": "lb_desc8", | 
 |  |  |             "text": "#8", | 
 |  |  |             "id": "lb_desc1", | 
 |  |  |             "text": "#1", | 
 |  |  |             "top": 150, | 
 |  |  |             "left": 1345, | 
 |  |  |             "width": 30, | 
 |  |  |             "height": 23 | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             "type": "rackDescs", | 
 |  |  |             "id": "lb_desc6", | 
 |  |  |             "text": "#6", | 
 |  |  |             "top": 223, | 
 |  |  |             "left": 1380, | 
 |  |  |             "width": 30, | 
 |  |  |             "height": 23 | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             "type": "rackDescs", | 
 |  |  |             "id": "lb_desc5", | 
 |  |  |             "text": "#5", | 
 |  |  |             "top": 245, | 
 |  |  |             "left": 1380, | 
 |  |  |             "width": 30, | 
 |  |  |             "height": 23 | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             "type": "rackDescs", | 
 |  |  |             "id": "lb_desc4", | 
 |  |  |             "text": "#4", | 
 |  |  |             "top": 280, | 
 |  |  |             "left": 1380, | 
 |  |  |             "width": 30, | 
 |  |  |             "height": 23 | 
 |  |  | 
 |  |  |             "type": "rackDescs", | 
 |  |  |             "id": "lb_desc3", | 
 |  |  |             "text": "#3", | 
 |  |  |             "top": 223, | 
 |  |  |             "left": 1380, | 
 |  |  |             "width": 30, | 
 |  |  |             "height": 23 | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             "type": "rackDescs", | 
 |  |  |             "id": "lb_desc4", | 
 |  |  |             "text": "#4", | 
 |  |  |             "top": 245, | 
 |  |  |             "left": 1380, | 
 |  |  |             "width": 30, | 
 |  |  |             "height": 23 | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             "type": "rackDescs", | 
 |  |  |             "id": "lb_desc5", | 
 |  |  |             "text": "#5", | 
 |  |  |             "top": 280, | 
 |  |  |             "left": 1380, | 
 |  |  |             "width": 30, | 
 |  |  |             "height": 23 | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             "type": "rackDescs", | 
 |  |  |             "id": "lb_desc6", | 
 |  |  |             "text": "#6", | 
 |  |  |             "top": 300, | 
 |  |  |             "left": 1380, | 
 |  |  |             "width": 30, | 
 |  |  | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             "type": "rackDescs", | 
 |  |  |             "id": "lb_desc1", | 
 |  |  |             "text": "#1", | 
 |  |  |             "id": "lb_desc8", | 
 |  |  |             "text": "#8", | 
 |  |  |             "top": 380, | 
 |  |  |             "left": 1345, | 
 |  |  |             "left": 1380, | 
 |  |  |             "width": 30, | 
 |  |  |             "height": 23 | 
 |  |  |         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-102", | 
 |  |  |                             "text": "102", | 
 |  |  |                             "top": 173, | 
 |  |  |                             "left": 403, | 
 |  |  |                             "top": 172, | 
 |  |  |                             "left": 1342, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-101", | 
 |  |  |                             "text": "101", | 
 |  |  |                             "top": 173, | 
 |  |  |                             "left": 332, | 
 |  |  |                             "top": 172, | 
 |  |  |                             "left": 1413, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-100", | 
 |  |  |                             "text": "100", | 
 |  |  |                             "top": 173, | 
 |  |  |                             "left": 261, | 
 |  |  |                             "top": 172, | 
 |  |  |                             "left": 1484, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-106", | 
 |  |  |                             "text": "106", | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 403, | 
 |  |  |                             "top": 359, | 
 |  |  |                             "left": 1342, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-105", | 
 |  |  |                             "text": "105", | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 332, | 
 |  |  |                             "top": 359, | 
 |  |  |                             "left": 1413, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-104", | 
 |  |  |                             "text": "104", | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 261, | 
 |  |  |                             "top": 359, | 
 |  |  |                             "left": 1484, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-103", | 
 |  |  |                             "text": "103", | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 190, | 
 |  |  |                             "top": 359, | 
 |  |  |                             "left": 1555, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-112", | 
 |  |  |                             "text": "112", | 
 |  |  |                             "top": 172, | 
 |  |  |                             "left": 1342, | 
 |  |  |                             "top": 173, | 
 |  |  |                             "left": 403, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-111", | 
 |  |  |                             "text": "111", | 
 |  |  |                             "top": 172, | 
 |  |  |                             "left": 1413, | 
 |  |  |                             "top": 173, | 
 |  |  |                             "left": 332, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-110", | 
 |  |  |                             "text": "110", | 
 |  |  |                             "top": 172, | 
 |  |  |                             "left": 1484, | 
 |  |  |                             "top": 173, | 
 |  |  |                             "left": 261, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-116", | 
 |  |  |                             "text": "116", | 
 |  |  |                             "top": 359, | 
 |  |  |                             "left": 1342, | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 403, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-115", | 
 |  |  |                             "text": "115", | 
 |  |  |                             "top": 359, | 
 |  |  |                             "left": 1413, | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 332, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-114", | 
 |  |  |                             "text": "114", | 
 |  |  |                             "top": 359, | 
 |  |  |                             "left": 1484, | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 261, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-113", | 
 |  |  |                             "text": "113", | 
 |  |  |                             "top": 359, | 
 |  |  |                             "left": 1555, | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 190, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "id": "site-202", | 
 |  |  |                             "text": "202", | 
 |  |  |                             "top": 173, | 
 |  |  |                             "left": 1342, | 
 |  |  |                             "left": 403, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "id": "site-201", | 
 |  |  |                             "text": "201", | 
 |  |  |                             "top": 173, | 
 |  |  |                             "left": 1413, | 
 |  |  |                             "left": 332, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "id": "site-200", | 
 |  |  |                             "text": "200", | 
 |  |  |                             "top": 173, | 
 |  |  |                             "left": 1484, | 
 |  |  |                             "left": 261, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "id": "site-205", | 
 |  |  |                             "text": "205", | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 1342, | 
 |  |  |                             "left": 403, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "id": "site-204", | 
 |  |  |                             "text": "204", | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 1413, | 
 |  |  |                             "left": 332, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "id": "site-203", | 
 |  |  |                             "text": "203", | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 1484, | 
 |  |  |                             "left": 261, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "id": "site-302", | 
 |  |  |                             "text": "302", | 
 |  |  |                             "top": 173, | 
 |  |  |                             "left": 1342, | 
 |  |  |                             "left": 403, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "id": "site-301", | 
 |  |  |                             "text": "301", | 
 |  |  |                             "top": 173, | 
 |  |  |                             "left": 1413, | 
 |  |  |                             "left": 332, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "id": "site-300", | 
 |  |  |                             "text": "300", | 
 |  |  |                             "top": 173, | 
 |  |  |                             "left": 1484, | 
 |  |  |                             "left": 261, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "id": "site-305", | 
 |  |  |                             "text": "305", | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 1342, | 
 |  |  |                             "left": 403, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "id": "site-304", | 
 |  |  |                             "text": "304", | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 1413, | 
 |  |  |                             "left": 332, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 |  |  | 
 |  |  |                             "id": "site-303", | 
 |  |  |                             "text": "303", | 
 |  |  |                             "top": 358, | 
 |  |  |                             "left": 1484, | 
 |  |  |                             "left": 261, | 
 |  |  |                             "width": 70, | 
 |  |  |                             "height": 20 | 
 |  |  |                         }, | 
 
 |  |  | 
 |  |  |                     <!--            <span> </span>--> | 
 |  |  |                     <input id="crn2" disabled="disabled"> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="crn-command-item"> | 
 |  |  |                     <label>3#</label> | 
 |  |  |                     <button id="demoBtn-3" class="demoBtn" onclick="demoSwitch(this.id)"> - </button> | 
 |  |  |                     <!--            <span> </span>--> | 
 |  |  |                     <input id="crn3" disabled="disabled"> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="crn-command-item"> | 
 |  |  |                     <label>4#</label> | 
 |  |  |                     <button id="demoBtn-4" class="demoBtn" onclick="demoSwitch(this.id)"> - </button> | 
 |  |  |                     <!--            <span> </span>--> | 
 |  |  |                     <input id="crn4" disabled="disabled"> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="crn-command-item"> | 
 |  |  |                     <label>5#</label> | 
 |  |  |                     <button id="demoBtn-5" class="demoBtn" onclick="demoSwitch(this.id)"> - </button> | 
 |  |  |                     <!--            <span> </span>--> | 
 |  |  |                     <input id="crn5" disabled="disabled"> | 
 |  |  |                 </div> | 
 |  |  |  | 
 |  |  |             </div> | 
 |  |  |             <!-- 堆垛机状态位信息 --> | 
 |  |  |             <div class="crn-state"> | 
 |  |  | 
 |  |  |                     <div class="select-container" style="padding: 20px 0;"> | 
 |  |  |                         <label><input type="radio" name="crnSelect" value="1" checked> 1号堆垛机</label> | 
 |  |  |                         <label><input type="radio" name="crnSelect" value="2"> 2号堆垛机</label> | 
 |  |  |                         <label><input type="radio" name="crnSelect" value="3"> 3号堆垛机</label> | 
 |  |  |                         <label><input type="radio" name="crnSelect" value="4"> 4号堆垛机</label> | 
 |  |  |                         <label><input type="radio" name="crnSelect" value="5"> 5号堆垛机</label> | 
 |  |  |  | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 源站/源库位 选择 --> |