diff --git a/src/main/java/com/iflytop/colortitration/app/command/control/StopAllMotorCommand.java b/src/main/java/com/iflytop/colortitration/app/command/control/StopAllMotorCommand.java new file mode 100644 index 0000000..b782702 --- /dev/null +++ b/src/main/java/com/iflytop/colortitration/app/command/control/StopAllMotorCommand.java @@ -0,0 +1,39 @@ +package com.iflytop.colortitration.app.command.control; + +import com.iflytop.colortitration.app.common.annotation.CommandMapping; +import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; +import com.iflytop.colortitration.app.core.command.BaseCommandHandler; +import com.iflytop.colortitration.app.model.dto.CommandDTO; +import com.iflytop.colortitration.app.service.module.TitrationModuleService; +import com.iflytop.colortitration.app.service.module.TransferModuleService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.concurrent.CompletableFuture; + +/** + * 停止所有电机 + */ +@Slf4j +@Component +@RequiredArgsConstructor +@CommandMapping("stop_all_motor") +public class StopAllMotorCommand extends BaseCommandHandler { + private final TitrationModuleService titrationModuleService; + private final TransferModuleService transferModuleService; + + @Override + public CompletableFuture handle(CommandDTO commandDTO) { + + return runAsync(() -> { + //停止转运电机 + transferModuleService.stopAllMotor(); + //停止摇匀电机 + titrationModuleService.shakeStop(MultipleModuleCode.MODULE_1); + titrationModuleService.shakeStop(MultipleModuleCode.MODULE_2); + //停止所有的泵 todo + }); + } +} + diff --git a/src/main/java/com/iflytop/colortitration/app/controller/PositionController.java b/src/main/java/com/iflytop/colortitration/app/controller/PositionController.java index 0a1edfd..cc77a2d 100644 --- a/src/main/java/com/iflytop/colortitration/app/controller/PositionController.java +++ b/src/main/java/com/iflytop/colortitration/app/controller/PositionController.java @@ -26,11 +26,11 @@ public class PositionController { @Operation(summary = "查询设备位置") @GetMapping("/list") - public List list() { + public Result> list() { List devicePositions = positionService.list(); - return devicePositions.stream() + return Result.success(devicePositions.stream() .map(DevicePositionVO::new) - .collect(Collectors.toList()); + .collect(Collectors.toList())); } @Operation(summary = "添加设备位置") diff --git a/src/main/java/com/iflytop/colortitration/app/service/module/TransferModuleService.java b/src/main/java/com/iflytop/colortitration/app/service/module/TransferModuleService.java index dee0405..17da12a 100644 --- a/src/main/java/com/iflytop/colortitration/app/service/module/TransferModuleService.java +++ b/src/main/java/com/iflytop/colortitration/app/service/module/TransferModuleService.java @@ -95,8 +95,10 @@ public class TransferModuleService { */ public void roboticMoveToTitration(MultipleModuleCode moduleCode) throws Exception { Point3D position = switch (moduleCode) { //1、首先检测试管所在的托盘传感器的值 - case MultipleModuleCode.MODULE_1 -> positionService.getPositionByCode(DevicePositionCode.titrationArea_1).getPoint3D(); - case MultipleModuleCode.MODULE_2 -> positionService.getPositionByCode(DevicePositionCode.titrationArea_2).getPoint3D(); + case MultipleModuleCode.MODULE_1 -> + positionService.getPositionByCode(DevicePositionCode.titrationArea_1).getPoint3D(); + case MultipleModuleCode.MODULE_2 -> + positionService.getPositionByCode(DevicePositionCode.titrationArea_2).getPoint3D(); }; // Z轴回零点 DeviceCommand zOriginCommand = DeviceCommandGenerator.zMove(0.0); @@ -116,8 +118,10 @@ public class TransferModuleService { */ public void roboticMoveToHeat(MultipleModuleCode moduleCode) throws Exception { Point3D position = switch (moduleCode) { //1、首先检测试管所在的托盘传感器的值 - case MultipleModuleCode.MODULE_1 -> positionService.getPositionByCode(DevicePositionCode.heatArea_1).getPoint3D(); - case MultipleModuleCode.MODULE_2 -> positionService.getPositionByCode(DevicePositionCode.heatArea_2).getPoint3D(); + case MultipleModuleCode.MODULE_1 -> + positionService.getPositionByCode(DevicePositionCode.heatArea_1).getPoint3D(); + case MultipleModuleCode.MODULE_2 -> + positionService.getPositionByCode(DevicePositionCode.heatArea_2).getPoint3D(); }; // Z轴回零点 DeviceCommand zOriginCommand = DeviceCommandGenerator.zMove(0.0); @@ -194,5 +198,16 @@ public class TransferModuleService { CommandUtil.wait(zOriginFuture); } + public void stopAllMotor() throws Exception { + DeviceCommand zStopCommand = DeviceCommandGenerator.zStop(); + CommandFuture zStopFuture = deviceCommandService.sendCommand(zStopCommand); + // 机械臂大轴移动 + DeviceCommand xStopCommand = DeviceCommandGenerator.roboticArmBigMotorStop(); + CommandFuture xStopFuture = deviceCommandService.sendCommand(xStopCommand); + // 机械臂小轴移动 + DeviceCommand yStopCommand = DeviceCommandGenerator.roboticArmBigMotorStop(); + CommandFuture yStopFuture = deviceCommandService.sendCommand(yStopCommand); + } + }