From e303e070611fac148b3e7772581b63937ab79c49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=A2=A6=E8=BF=9C?= <1063331231@qq.com> Date: Sat, 26 Jul 2025 21:23:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=81=9C=E6=AD=A2=E6=89=80?= =?UTF-8?q?=E6=9C=89=E7=94=B5=E6=9C=BA=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/command/control/StopAllMotorCommand.java | 39 ++++++++++++++++++++++ .../app/controller/PositionController.java | 6 ++-- .../app/service/module/TransferModuleService.java | 23 ++++++++++--- 3 files changed, 61 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/iflytop/colortitration/app/command/control/StopAllMotorCommand.java 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); + } + }