From 5e51a952681402aca72174ee757274627f3568e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Sat, 31 May 2025 11:53:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=87=AA=E6=A3=80=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gd/app/command/selftest/MoveTestCommand.java | 67 +++++++++++++--------- .../gd/app/model/bo/status/CommandMutexState.java | 4 ++ 2 files changed, 43 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/iflytop/gd/app/command/selftest/MoveTestCommand.java b/src/main/java/com/iflytop/gd/app/command/selftest/MoveTestCommand.java index ed80a9a..f3cd643 100644 --- a/src/main/java/com/iflytop/gd/app/command/selftest/MoveTestCommand.java +++ b/src/main/java/com/iflytop/gd/app/command/selftest/MoveTestCommand.java @@ -5,12 +5,15 @@ import com.iflytop.gd.app.core.SelfMoveTestGenerator; import com.iflytop.gd.app.model.bo.Point3D; import com.iflytop.gd.app.model.dto.CmdDTO; import com.iflytop.gd.app.service.api.DevicePositionService; +import com.iflytop.gd.app.service.device.DeviceStateService; import com.iflytop.gd.app.service.device.module.CapModuleService; import com.iflytop.gd.app.service.device.module.GantryModuleService; import com.iflytop.gd.app.service.device.module.SolutionModuleService; import com.iflytop.gd.app.ws.server.WebSocketSender; import com.iflytop.gd.common.annotation.CommandMapping; import com.iflytop.gd.common.enums.data.DevicePositionCode; +import com.iflytop.gd.common.exception.AppException; +import com.iflytop.gd.common.result.ResultCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -29,42 +32,50 @@ public class MoveTestCommand extends BaseCommandHandler { private final SolutionModuleService solutionModuleService; private final DevicePositionService devicePositionService; private final CapModuleService capModuleService; - + private final DeviceStateService deviceStateService; private final WebSocketSender webSocketService; @Override public CompletableFuture handle(CmdDTO cmdDTO) { + if (deviceStateService.getCommandMutexState().get().isMoveTest()) { + throw new AppException(ResultCode.COMMAND_ALREADY_EXECUTING); + } Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液模块上方点位 Double solutionModuleTrayMoveHeight = devicePositionService.getPosition(DevicePositionCode.solutionModuleTrayMoveHeight).getDistance();//加液模块托盘z轴移动高度 + deviceStateService.getCommandMutexState().get().setMoveTest(true); return runAsync(() -> { - webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "1、各项传感器正常", 15)); - //移动xy到加液模块 - gantryModuleService.gantryMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint3D); - //移动z - gantryModuleService.gantryZMove(solutionModuleTrayMoveHeight);//下降z轴,使托盘落入加液模块 - //xyz回0点 - gantryModuleService.gantryZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0);//抬升z轴 - webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "2、z轴电机检测完毕", 30)); - gantryModuleService.gantryMoveZero(); - webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "3、xy轴电机检测完毕", 45)); - //抬起托盘1-6 - gantryModuleService.allTrayUp(cmdDTO.getCommandId(), cmdDTO.getCommand()); - gantryModuleService.allTrayDown(cmdDTO.getCommandId(), cmdDTO.getCommand()); - webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "4、加热模块升降电机检测完毕", 60)); - //抬升拍子升降 - capModuleService.capMotorMove(21); - webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "5、拍子存放区升降电机检测完毕", 75)); - //摇匀 - solutionModuleService.shakeStart(cmdDTO.getCommandId(), cmdDTO.getCommand()); - Thread.sleep(2000); - solutionModuleService.shakeStop(cmdDTO.getCommandId(), cmdDTO.getCommand()); - solutionModuleService.shakeOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand()); - webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "6、摇匀电机检测完毕", 90)); - //加液机械臂 - solutionModuleService.dualRobotMovePoint(16); - solutionModuleService.dualRobotOrigin(); - webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "7、加液机械臂检测完毕", 100)); + try{ + webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "1、各项传感器正常", 15)); + //移动xy到加液模块 + gantryModuleService.gantryMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint3D); + //移动z + gantryModuleService.gantryZMove(solutionModuleTrayMoveHeight);//下降z轴,使托盘落入加液模块 + //xyz回0点 + gantryModuleService.gantryZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0);//抬升z轴 + webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "2、z轴电机检测完毕", 30)); + gantryModuleService.gantryMoveZero(); + webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "3、xy轴电机检测完毕", 45)); + //抬起托盘1-6 + gantryModuleService.allTrayUp(cmdDTO.getCommandId(), cmdDTO.getCommand()); + gantryModuleService.allTrayDown(cmdDTO.getCommandId(), cmdDTO.getCommand()); + webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "4、加热模块升降电机检测完毕", 60)); + //抬升拍子升降 + capModuleService.capMotorMove(21); + webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "5、拍子存放区升降电机检测完毕", 75)); + //摇匀 + solutionModuleService.shakeStart(cmdDTO.getCommandId(), cmdDTO.getCommand()); + Thread.sleep(2000); + solutionModuleService.shakeStop(cmdDTO.getCommandId(), cmdDTO.getCommand()); + solutionModuleService.shakeOrigin(cmdDTO.getCommandId(), cmdDTO.getCommand()); + webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "6、摇匀电机检测完毕", 90)); + //加液机械臂 + solutionModuleService.dualRobotMovePoint(16); + solutionModuleService.dualRobotOrigin(); + webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "7、加液机械臂检测完毕", 100)); + }finally { + deviceStateService.getCommandMutexState().get().setMoveTest(false); + } }); } } diff --git a/src/main/java/com/iflytop/gd/app/model/bo/status/CommandMutexState.java b/src/main/java/com/iflytop/gd/app/model/bo/status/CommandMutexState.java index 9d78150..5e18242 100644 --- a/src/main/java/com/iflytop/gd/app/model/bo/status/CommandMutexState.java +++ b/src/main/java/com/iflytop/gd/app/model/bo/status/CommandMutexState.java @@ -32,4 +32,8 @@ public class CommandMutexState { private boolean trayDownCommandExecuting = false; private boolean trayLiftingOriginCommandExecuting = false; private boolean trayUpCommandExecuting = false; + + private boolean moveTest = false; + private boolean trayOut = false; + }