| | |
| | | |
| | | // 启动漫游线程 |
| | | new Thread(this::taskWalkIssued).start(); |
| | | new Thread(this::taskWalkIssued2).start(); |
| | | |
| | | // 启动任务完成线程 |
| | | new Thread(this::taskComplete).start(); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 任务下发 |
| | | */ |
| | | private void taskWalkIssued2() { |
| | | while (true) { |
| | | try { |
| | | // 休眠 1 秒 |
| | | Thread.sleep(100); |
| | | if (!deviceDetection()) { |
| | | continue; |
| | | } |
| | | RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); |
| | | RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); |
| | | if (rgvProtocol == null || rgvTaskProtocol == null) { |
| | | initRgv(); |
| | | rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); |
| | | rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); |
| | | } |
| | | if (rgvTaskProtocol.getAvoid() != 0) { |
| | | continue; |
| | | } |
| | | if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE)){ |
| | | continue; |
| | | } |
| | | if (rgvProtocol.getLoaded() == -1){ |
| | | continue; |
| | | } |
| | | |
| | | List<TaskProtocol> allTakeTaskProtocol = taskProtocolCache.getAllWalkTaskProtocol(); |
| | | for (TaskProtocol taskProtocol : allTakeTaskProtocol) { |
| | | if (taskProtocol.getIsRunning() == 1) {//准备下发 |
| | | // 双车 |
| | | if (rgvOtherStatusEnable()) { |
| | | //另一台车是否允许此台车执行 |
| | | if (!otherRgvAvoid(taskProtocol.getTargetPosition())) { |
| | | continue; |
| | | } |
| | | } |
| | | if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50 |
| | | && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){ |
| | | taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); |
| | | break; |
| | | } else { |
| | | Thread.sleep(100); |
| | | TaskProtocol issued = new TaskProtocol(taskProtocol,true); |
| | | write(issued); |
| | | taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("RGV取货任务下发线程异常!!!" + e.getMessage()); |
| | | // e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 漫游 |
| | | */ |
| | | private void taskWalkIssued() { |
| | |
| | | TaskProtocol issued = new TaskProtocol(); |
| | | issued.setTaskNo(32222L); |
| | | issued.setTargetPosition(rgvTaskProtocol.getAvoidingTheDestination()); |
| | | issued.setTaskStatus(1); |
| | | issued.setDirection(true); |
| | | write(issued); |
| | | rgvTaskProtocol.setAvoid(0); |
| | | |
| | |
| | | if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE)){ |
| | | continue; |
| | | } |
| | | if (rgvProtocol.getLoaded() == -1){ |
| | | continue; |
| | | } |
| | | |
| | | List<TaskProtocol> allTakeTaskProtocol = taskProtocolCache.getTakeOrPutTaskProtocol(rgvProtocol.getLoaded()); |
| | | for (TaskProtocol taskProtocol : allTakeTaskProtocol) { |
| | | if (taskProtocol.getIsRunning() == 1) {//准备下发 |
| | | RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); |
| | | // RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); |
| | | //双车 |
| | | if (rgvOtherStatusEnable()) { |
| | | //另一台车是否允许此台车执行 |
| | |
| | | Thread.sleep(100); |
| | | TaskProtocol issued = new TaskProtocol(taskProtocol); |
| | | write(issued); |
| | | // taskProtocol.setIsRunning(4); |
| | | // taskProtocolCache.updateTaskProtocol(taskProtocol); |
| | | taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); |
| | | break; |
| | | } else { |
| | | Thread.sleep(100); |
| | | TaskProtocol issued = new TaskProtocol(taskProtocol,true); |
| | | write(issued); |
| | | // taskProtocol.setIsRunning(4); |
| | | // taskProtocolCache.updateTaskProtocol(taskProtocol); |
| | | break; |
| | | } |
| | | } |