diff --git a/src/main/java/com/iflytop/gd/app/cmd/DualRobotJointOriginCommand.java b/src/main/java/com/iflytop/gd/app/cmd/DualRobotJointOriginCommand.java index 71feef5..00bffc8 100644 --- a/src/main/java/com/iflytop/gd/app/cmd/DualRobotJointOriginCommand.java +++ b/src/main/java/com/iflytop/gd/app/cmd/DualRobotJointOriginCommand.java @@ -3,6 +3,7 @@ package com.iflytop.gd.app.cmd; import com.iflytop.gd.app.core.BaseCommandHandler; import com.iflytop.gd.app.model.dto.CmdDTO; import com.iflytop.gd.app.service.DeviceCommandUtilService; +import com.iflytop.gd.app.service.DeviceStateService; import com.iflytop.gd.app.service.SelfTestService; import com.iflytop.gd.common.annotation.CommandMapping; import com.iflytop.gd.common.enums.cmd.CmdAxis; @@ -20,17 +21,22 @@ import java.util.concurrent.CompletableFuture; @Slf4j @Component @RequiredArgsConstructor -@CommandMapping("dual_robot_joint_origin")//业务指令注解 +@CommandMapping("dual_robot_origin")//业务指令注解 public class DualRobotJointOriginCommand extends BaseCommandHandler { private final LiquidDistributionArmDriver liquidDistributionArmDriver; + private final DeviceStateService deviceStateService; + private final SelfTestService selfTestService; @Override public CompletableFuture handle(CmdDTO cmdDTO) { return runAsync(() -> { - //加液臂电机使能 TODO将来干掉 - liquidDistributionArmDriver.liquidDistributionArmEnable(LiquidArmMId.LiquidDistributionArm, 1); - //将加液臂移动至0位 - liquidDistributionArmDriver.liquidDistributionArmMoveTo(LiquidArmMId.LiquidDistributionArm, 0); + if (!deviceStateService.getDeviceState().isVirtual()) {//虚拟模式不执行 + //加液臂电机使能 TODO将来干掉 + liquidDistributionArmDriver.liquidDistributionArmEnable(LiquidArmMId.LiquidDistributionArm, 1); + //将加液臂移动至0位 + liquidDistributionArmDriver.liquidDistributionArmMoveTo(LiquidArmMId.LiquidDistributionArm, 0); + } + selfTestService.getSelfTestState().setDualRobotOrigin(true);//设置是否在原点状态 }); } } diff --git a/src/main/java/com/iflytop/gd/app/cmd/MoveToHeatAreaCommand.java b/src/main/java/com/iflytop/gd/app/cmd/MoveToHeatAreaCommand.java index 4b1ec35..1a1e880 100644 --- a/src/main/java/com/iflytop/gd/app/cmd/MoveToHeatAreaCommand.java +++ b/src/main/java/com/iflytop/gd/app/cmd/MoveToHeatAreaCommand.java @@ -15,6 +15,7 @@ import com.iflytop.gd.common.exception.AppException; import com.iflytop.gd.common.result.ResultCode; import com.iflytop.gd.hardware.service.GDDeviceStatusService; import com.iflytop.gd.hardware.type.IO.InputIOMId; +import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -34,11 +35,13 @@ public class MoveToHeatAreaCommand extends BaseCommandHandler { private final DevicePositionService devicePositionService; private final GantryArmService gantryArmService; private final DeviceStateService deviceStateService; + private final MoveToSolutionAreaCommand moveToSolutionAreaCommand; + @Getter private final AtomicBoolean isExecuting = new AtomicBoolean(false); @Override public CompletableFuture handle(CmdDTO cmdDTO) throws Exception { - if (isExecuting.get()) { + if (isExecuting.get() || moveToSolutionAreaCommand.getIsExecuting().get()) { throw new AppException(ResultCode.COMMAND_ALREADY_EXECUTING); } isExecuting.set(true); diff --git a/src/main/java/com/iflytop/gd/app/cmd/MoveToSolutionAreaCommand.java b/src/main/java/com/iflytop/gd/app/cmd/MoveToSolutionAreaCommand.java index bc6c688..58ee4b7 100644 --- a/src/main/java/com/iflytop/gd/app/cmd/MoveToSolutionAreaCommand.java +++ b/src/main/java/com/iflytop/gd/app/cmd/MoveToSolutionAreaCommand.java @@ -14,6 +14,7 @@ import com.iflytop.gd.common.enums.data.DevicePositionCode; import com.iflytop.gd.common.exception.AppException; import com.iflytop.gd.common.result.ResultCode; import com.iflytop.gd.hardware.exception.HardwareException; +import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -33,11 +34,13 @@ public class MoveToSolutionAreaCommand extends BaseCommandHandler { private final DevicePositionService devicePositionService; private final GantryArmService gantryArmService; private final DeviceStateService deviceStateService; + private final MoveToHeatAreaCommand moveToHeatAreaCommand; + @Getter private final AtomicBoolean isExecuting = new AtomicBoolean(false); @Override public CompletableFuture handle(CmdDTO cmdDTO) throws Exception { - if (isExecuting.get()) { + if (isExecuting.get() || moveToHeatAreaCommand.getIsExecuting().get()) { throw new AppException(ResultCode.COMMAND_ALREADY_EXECUTING); } isExecuting.set(true); diff --git a/src/main/java/com/iflytop/gd/app/cmd/SolutionAddCommand.java b/src/main/java/com/iflytop/gd/app/cmd/SolutionAddCommand.java index 7f29f5f..fa0d529 100644 --- a/src/main/java/com/iflytop/gd/app/cmd/SolutionAddCommand.java +++ b/src/main/java/com/iflytop/gd/app/cmd/SolutionAddCommand.java @@ -2,6 +2,7 @@ package com.iflytop.gd.app.cmd; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.iflytop.gd.app.core.BaseCommandHandler; import com.iflytop.gd.app.model.dto.CmdDTO; import com.iflytop.gd.app.service.ContainerService; @@ -35,7 +36,7 @@ public class SolutionAddCommand extends BaseCommandHandler { public CompletableFuture handle(CmdDTO cmdDTO) { deviceStateService.setSolutionModuleStatePumping(true); return runAsync(() -> { - JSONArray dataList = (JSONArray) cmdDTO.getParams().get("dataList"); + JSONArray dataList = JSONUtil.parseArray(cmdDTO.getParams().get("dataList")); for (int i = 0; i < dataList.size(); i++) {//遍历前端传入的加液配置 JSONObject tubeSol = dataList.getJSONObject(i); String tubeNum = tubeSol.getStr("tubeNum");//获取试管编号 @@ -50,7 +51,7 @@ public class SolutionAddCommand extends BaseCommandHandler { Double volume = addSolution.getDouble("volume"); AcidPumpDeviceCode acidPumpDevice = containerService.getPumpBySolutionId(solId);//获取溶液对应的泵 if (acidPumpDevice == null) { - throw new AppException(ResultCode.CRAFT_CONTAINER_NOT_FOUND);//工艺未找到对应溶液容器 + throw new AppException(ResultCode.CRAFT_CONTAINER_NOT_FOUND);//未找到对应溶液容器 } deviceCommandUtilService.dualRobotMovePoint(num);//移动加液机械臂到指定试管点位 deviceCommandUtilService.acidPumpMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), acidPumpDevice, volume);//添加溶液 diff --git a/src/main/java/com/iflytop/gd/app/cmd/debug/DebugLiquidPumpStartCommand.java b/src/main/java/com/iflytop/gd/app/cmd/debug/DebugLiquidPumpStartCommand.java index ea1655d..3ae2b9c 100644 --- a/src/main/java/com/iflytop/gd/app/cmd/debug/DebugLiquidPumpStartCommand.java +++ b/src/main/java/com/iflytop/gd/app/cmd/debug/DebugLiquidPumpStartCommand.java @@ -8,6 +8,8 @@ import com.iflytop.gd.common.cmd.CommandFuture; import com.iflytop.gd.common.cmd.DeviceCommandBundle; import com.iflytop.gd.common.cmd.DeviceCommandGenerator; import com.iflytop.gd.common.enums.AcidPumpDeviceCode; +import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorCtrlDriver; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -23,6 +25,7 @@ import java.util.concurrent.CompletableFuture; @CommandMapping("debug_liquid_pump_start") public class DebugLiquidPumpStartCommand extends BaseCommandHandler { private final DeviceCommandService deviceCommandService; + private final StepMotorCtrlDriver stepMotorCtrlDriver; @Override public CompletableFuture handle(CmdDTO cmdDTO) { @@ -50,18 +53,53 @@ public class DebugLiquidPumpStartCommand extends BaseCommandHandler { } switch (acidPumpDevice) { - case acid_pump_01 -> deviceCommand = DeviceCommandGenerator.acidPump1MoveBy(volume); - case acid_pump_02 -> deviceCommand = DeviceCommandGenerator.acidPump2MoveBy(volume); - case acid_pump_03 -> deviceCommand = DeviceCommandGenerator.acidPump3MoveBy(volume); - case acid_pump_04 -> deviceCommand = DeviceCommandGenerator.acidPump4MoveBy(volume); - case acid_pump_05 -> deviceCommand = DeviceCommandGenerator.acidPump5MoveBy(volume); - case acid_pump_06 -> deviceCommand = DeviceCommandGenerator.acidPump6MoveBy(volume); - case acid_pump_07 -> deviceCommand = DeviceCommandGenerator.acidPump7MoveBy(volume); - case acid_pump_08 -> deviceCommand = DeviceCommandGenerator.acidPump8MoveBy(volume); + case acid_pump_01 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_1_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump1MoveBy(volume); + } + case acid_pump_02 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_2_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump2MoveBy(volume); + } + case acid_pump_03 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_3_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump3MoveBy(volume); + } + case acid_pump_04 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_4_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump4MoveBy(volume); + } + case acid_pump_05 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_5_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump5MoveBy(volume); + } + case acid_pump_06 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_6_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump6MoveBy(volume); + } + case acid_pump_07 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_7_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump7MoveBy(volume); + } + case acid_pump_08 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_8_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump8MoveBy(volume); + } default -> throw new RuntimeException("index 未找到"); } CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand); commandWait(deviceCommandFuture); + switch (acidPumpDevice) { + case acid_pump_01 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_1_MOTOR_MID, 0); + case acid_pump_02 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_2_MOTOR_MID, 0); + case acid_pump_03 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_3_MOTOR_MID, 0); + case acid_pump_04 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_4_MOTOR_MID, 0); + case acid_pump_05 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_5_MOTOR_MID, 0); + case acid_pump_06 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_6_MOTOR_MID, 0); + case acid_pump_07 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_7_MOTOR_MID, 0); + case acid_pump_08 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_8_MOTOR_MID, 0); + default -> throw new RuntimeException("index 未找到"); + } }); } } diff --git a/src/main/java/com/iflytop/gd/app/cmd/debug/DebugLiquidPumpStopCommand.java b/src/main/java/com/iflytop/gd/app/cmd/debug/DebugLiquidPumpStopCommand.java index 0d7a297..9a1de8d 100644 --- a/src/main/java/com/iflytop/gd/app/cmd/debug/DebugLiquidPumpStopCommand.java +++ b/src/main/java/com/iflytop/gd/app/cmd/debug/DebugLiquidPumpStopCommand.java @@ -8,6 +8,8 @@ import com.iflytop.gd.common.cmd.CommandFuture; import com.iflytop.gd.common.cmd.DeviceCommandBundle; import com.iflytop.gd.common.cmd.DeviceCommandGenerator; import com.iflytop.gd.common.enums.AcidPumpDeviceCode; +import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorCtrlDriver; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -23,6 +25,7 @@ import java.util.concurrent.CompletableFuture; @CommandMapping("debug_liquid_pump_stop") public class DebugLiquidPumpStopCommand extends BaseCommandHandler { private final DeviceCommandService deviceCommandService; + private final StepMotorCtrlDriver stepMotorCtrlDriver; @Override public CompletableFuture handle(CmdDTO cmdDTO) { @@ -43,6 +46,17 @@ public class DebugLiquidPumpStopCommand extends BaseCommandHandler { } CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand); commandWait(deviceCommandFuture); + switch (acidPumpDevice) { + case acid_pump_01 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_1_MOTOR_MID, 0); + case acid_pump_02 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_2_MOTOR_MID, 0); + case acid_pump_03 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_3_MOTOR_MID, 0); + case acid_pump_04 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_4_MOTOR_MID, 0); + case acid_pump_05 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_5_MOTOR_MID, 0); + case acid_pump_06 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_6_MOTOR_MID, 0); + case acid_pump_07 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_7_MOTOR_MID, 0); + case acid_pump_08 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_8_MOTOR_MID, 0); + default -> throw new RuntimeException("index 未找到"); + } }); } } diff --git a/src/main/java/com/iflytop/gd/app/core/device/SelfTestState.java b/src/main/java/com/iflytop/gd/app/core/device/SelfTestState.java index def5ea4..714d668 100644 --- a/src/main/java/com/iflytop/gd/app/core/device/SelfTestState.java +++ b/src/main/java/com/iflytop/gd/app/core/device/SelfTestState.java @@ -15,11 +15,8 @@ public class SelfTestState { @Schema(description = "龙门架机械臂z轴是否在原点") private boolean gantryZOrigin = false; - @Schema(description = "加液机械臂01是否在原点") - private boolean dualRobotJoint1Origin = false; - - @Schema(description = "加液机械臂02是否在原点") - private boolean dualRobotJoint2Origin = false; + @Schema(description = "加液机械臂是否在原点") + private boolean dualRobotOrigin = false; @Schema(description = "拍子升降是否在原点") private boolean capLiftingOrigin = false; diff --git a/src/main/java/com/iflytop/gd/app/service/DeviceCommandUtilService.java b/src/main/java/com/iflytop/gd/app/service/DeviceCommandUtilService.java index 848043a..b483dde 100644 --- a/src/main/java/com/iflytop/gd/app/service/DeviceCommandUtilService.java +++ b/src/main/java/com/iflytop/gd/app/service/DeviceCommandUtilService.java @@ -10,11 +10,13 @@ import com.iflytop.gd.common.enums.AcidPumpDeviceCode; import com.iflytop.gd.common.enums.HeatModuleCode; import com.iflytop.gd.common.enums.cmd.CmdAxis; import com.iflytop.gd.common.enums.data.DevicePositionCode; +import com.iflytop.gd.hardware.drivers.StepMotorDriver.StepMotorCtrlDriver; import com.iflytop.gd.hardware.exception.HardwareException; import com.iflytop.gd.hardware.service.GDDeviceStatusService; import com.iflytop.gd.hardware.type.IO.InputIOMId; import com.iflytop.gd.hardware.type.LiquidDistributionArmDriver; import com.iflytop.gd.hardware.type.Servo.LiquidArmMId; +import com.iflytop.gd.hardware.type.StepMotor.StepMotorMId; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -29,7 +31,7 @@ public class DeviceCommandUtilService { private final DevicePositionService devicePositionService; private final LiquidDistributionArmDriver liquidDistributionArmDriver; private final GDDeviceStatusService gdDeviceStatusService; - + private final StepMotorCtrlDriver stepMotorCtrlDriver; /** * 门电机回原点 */ @@ -74,6 +76,28 @@ public class DeviceCommandUtilService { */ public void gantryMove(String cmdId, String cmdCode, Point3D point) throws Exception { DeviceCommandBundle gantryXMoveDeviceCommand = DeviceCommandGenerator.gantryXMove(point.getX()); + CommandFuture gantryXMoveDeviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, gantryXMoveDeviceCommand); + + DeviceCommandBundle gantryYMoveDeviceCommand = DeviceCommandGenerator.gantryYMove(point.getY()); + CommandFuture gantryYMoveDeviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, gantryYMoveDeviceCommand); + + DeviceCommandBundle gantryZMoveDeviceCommand = DeviceCommandGenerator.gantryZMove(point.getZ()); + CommandFuture gantryZMoveDeviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, gantryZMoveDeviceCommand); + commandWait(gantryXMoveDeviceCommandFuture, gantryYMoveDeviceCommandFuture, gantryZMoveDeviceCommandFuture); + } + + /** + * 龙门架机械臂移动到指定点 + */ + public void gantryMoveQueue(Point3D point) throws Exception { + gantryMoveQueue(null, null, point); + } + + /** + * 龙门架机械臂移动到指定点 + */ + public void gantryMoveQueue(String cmdId, String cmdCode, Point3D point) throws Exception { + DeviceCommandBundle gantryXMoveDeviceCommand = DeviceCommandGenerator.gantryXMove(point.getX()); DeviceCommandBundle gantryYMoveDeviceCommand = DeviceCommandGenerator.gantryYMove(point.getY()); DeviceCommandBundle gantryZMoveDeviceCommand = DeviceCommandGenerator.gantryZMove(point.getZ()); CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, gantryXMoveDeviceCommand, gantryYMoveDeviceCommand, gantryZMoveDeviceCommand); @@ -93,10 +117,27 @@ public class DeviceCommandUtilService { */ public void gantryXMoveOrigin(String cmdId, String cmdCode) throws Exception { DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryXOrigin(); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + commandWait(deviceCommandFuture); + } + + /** + * 龙门架机械臂X轴回原点 + */ + public void gantryXMoveOriginQueue() throws Exception { + gantryXMoveOriginQueue(null, null); + } + + /** + * 龙门架机械臂X轴回原点 + */ + public void gantryXMoveOriginQueue(String cmdId, String cmdCode) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryXOrigin(); CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); commandWait(deviceCommandFutureArr); } + /** * 龙门架机械臂Y轴回原点 */ @@ -109,10 +150,28 @@ public class DeviceCommandUtilService { */ public void gantryYMoveOrigin(String cmdId, String cmdCode) throws Exception { DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryYOrigin(); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + commandWait(deviceCommandFuture); + } + + + /** + * 龙门架机械臂Y轴回原点 + */ + public void gantryYMoveOriginQueue() throws Exception { + gantryYMoveOriginQueue(null, null); + } + + /** + * 龙门架机械臂Y轴回原点 + */ + public void gantryYMoveOriginQueue(String cmdId, String cmdCode) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryYOrigin(); CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); commandWait(deviceCommandFutureArr); } + /** * 龙门架机械臂Z轴回原点 */ @@ -125,6 +184,23 @@ public class DeviceCommandUtilService { */ public void gantryZMoveOrigin(String cmdId, String cmdCode) throws Exception { DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryZOrigin(); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + commandWait(deviceCommandFuture); + } + + + /** + * 龙门架机械臂Z轴回原点 + */ + public void gantryZMoveOriginQueue() throws Exception { + gantryZMoveOriginQueue(null, null); + } + + /** + * 龙门架机械臂Z轴回原点 + */ + public void gantryZMoveOriginQueue(String cmdId, String cmdCode) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryZOrigin(); CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); commandWait(deviceCommandFutureArr); } @@ -141,6 +217,22 @@ public class DeviceCommandUtilService { */ public void gantryXMove(String cmdId, String cmdCode, double position) throws Exception { DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryXMove(position); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + commandWait(deviceCommandFuture); + } + + /** + * 龙门架机械臂X轴移动到指定点 + */ + public void gantryXMoveQueue(double position) throws Exception { + gantryXMoveQueue(null, null, position); + } + + /** + * 龙门架机械臂X轴移动到指定点 + */ + public void gantryXMoveQueue(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryXMove(position); CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); commandWait(deviceCommandFutureArr); } @@ -157,6 +249,22 @@ public class DeviceCommandUtilService { */ public void gantryYMove(String cmdId, String cmdCode, double position) throws Exception { DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryYMove(position); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + commandWait(deviceCommandFuture); + } + + /** + * 龙门架机械臂Y轴移动到指定点 + */ + public void gantryYMoveQueue(double position) throws Exception { + gantryYMoveQueue(null, null, position); + } + + /** + * 龙门架机械臂Y轴移动到指定点 + */ + public void gantryYMoveQueue(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryYMove(position); CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); commandWait(deviceCommandFutureArr); } @@ -173,6 +281,22 @@ public class DeviceCommandUtilService { */ public void gantryZMove(String cmdId, String cmdCode, double position) throws Exception { DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryZMove(position); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + commandWait(deviceCommandFuture); + } + + /** + * 龙门架机械臂Z轴移动到指定点 + */ + public void gantryZMoveQueue(double position) throws Exception { + gantryZMoveQueue(null, null, position); + } + + /** + * 龙门架机械臂Z轴移动到指定点 + */ + public void gantryZMoveQueue(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryZMove(position); CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); commandWait(deviceCommandFutureArr); } @@ -189,6 +313,22 @@ public class DeviceCommandUtilService { */ public void gantryXMoveBy(String cmdId, String cmdCode, double position) throws Exception { DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryXMoveBy(position); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + commandWait(deviceCommandFuture); + } + + /** + * 龙门架机械臂X轴相对移动到指定点 + */ + public void gantryXMoveByQueue(double position) throws Exception { + gantryXMoveByQueue(null, null, position); + } + + /** + * 龙门架机械臂X轴相对移动到指定点 + */ + public void gantryXMoveByQueue(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryXMoveBy(position); CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); commandWait(deviceCommandFutureArr); } @@ -205,6 +345,22 @@ public class DeviceCommandUtilService { */ public void gantryYMoveBy(String cmdId, String cmdCode, double position) throws Exception { DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryYMoveBy(position); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + commandWait(deviceCommandFuture); + } + + /** + * 龙门架机械臂Y轴相对移动到指定点 + */ + public void gantryYMoveByQueue(double position) throws Exception { + gantryYMoveByQueue(null, null, position); + } + + /** + * 龙门架机械臂Y轴相对移动到指定点 + */ + public void gantryYMoveByQueue(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryYMoveBy(position); CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); commandWait(deviceCommandFutureArr); } @@ -221,6 +377,22 @@ public class DeviceCommandUtilService { */ public void gantryZMoveBy(String cmdId, String cmdCode, double position) throws Exception { DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryZMoveBy(position); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); + commandWait(deviceCommandFuture); + } + + /** + * 龙门架机械臂Z轴相对移动到指定点 + */ + public void gantryZMoveByQueue(double position) throws Exception { + gantryZMoveByQueue(null, null, position); + } + + /** + * 龙门架机械臂Z轴相对移动到指定点 + */ + public void gantryZMoveByQueue(String cmdId, String cmdCode, double position) throws Exception { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.gantryZMoveBy(position); CommandFuture[] deviceCommandFutureArr = deviceCommandService.sendCommandGantryQueue(cmdId, cmdCode, deviceCommand); commandWait(deviceCommandFutureArr); } @@ -401,18 +573,55 @@ public class DeviceCommandUtilService { * 添加溶液 */ public void acidPumpMoveBy(String cmdId, String cmdCode, AcidPumpDeviceCode acidPumpDevice, double position) throws Exception { - DeviceCommandBundle deviceCommand = switch (acidPumpDevice) { - case acid_pump_01 -> DeviceCommandGenerator.acidPump1MoveBy(position); - case acid_pump_02 -> DeviceCommandGenerator.acidPump2MoveBy(position); - case acid_pump_03 -> DeviceCommandGenerator.acidPump3MoveBy(position); - case acid_pump_04 -> DeviceCommandGenerator.acidPump4MoveBy(position); - case acid_pump_05 -> DeviceCommandGenerator.acidPump5MoveBy(position); - case acid_pump_06 -> DeviceCommandGenerator.acidPump6MoveBy(position); - case acid_pump_07 -> DeviceCommandGenerator.acidPump7MoveBy(position); - case acid_pump_08 -> DeviceCommandGenerator.acidPump8MoveBy(position); - }; + DeviceCommandBundle deviceCommand; + switch (acidPumpDevice) { + case acid_pump_01 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_1_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump1MoveBy(position); + } + case acid_pump_02 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_2_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump2MoveBy(position); + } + case acid_pump_03 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_3_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump3MoveBy(position); + } + case acid_pump_04 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_4_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump4MoveBy(position); + } + case acid_pump_05 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_5_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump5MoveBy(position); + } + case acid_pump_06 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_6_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump6MoveBy(position); + } + case acid_pump_07 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_7_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump7MoveBy(position); + } + case acid_pump_08 -> { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_8_MOTOR_MID, 1); + deviceCommand = DeviceCommandGenerator.acidPump8MoveBy(position); + } + default -> throw new RuntimeException("index 未找到"); + } CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdId, cmdCode, deviceCommand); commandWait(deviceCommandFuture); + switch (acidPumpDevice) { + case acid_pump_01 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_1_MOTOR_MID, 0); + case acid_pump_02 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_2_MOTOR_MID, 0); + case acid_pump_03 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_3_MOTOR_MID, 0); + case acid_pump_04 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_4_MOTOR_MID, 0); + case acid_pump_05 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_5_MOTOR_MID, 0); + case acid_pump_06 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_6_MOTOR_MID, 0); + case acid_pump_07 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_7_MOTOR_MID, 0); + case acid_pump_08 -> stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ACID_PUMP_8_MOTOR_MID, 0); + default -> throw new RuntimeException("index 未找到"); + } } /**