From f7cce8d745c85b277b381619b077161f79b681bb Mon Sep 17 00:00:00 2001 From: guoapeng Date: Fri, 14 Feb 2025 14:31:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=8C=87=E4=BB=A4=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/qyft/gd/model/form/CMDForm.java | 14 +++ src/main/java/com/qyft/gd/service/CMDService.java | 119 ++++++++++++++-------- 2 files changed, 92 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/qyft/gd/model/form/CMDForm.java b/src/main/java/com/qyft/gd/model/form/CMDForm.java index 961f845..e39eaab 100644 --- a/src/main/java/com/qyft/gd/model/form/CMDForm.java +++ b/src/main/java/com/qyft/gd/model/form/CMDForm.java @@ -19,5 +19,19 @@ public class CMDForm { @Schema(description = "参数") private Map params; + /* + params : { + // 添加溶液所需字段 + tubeNum: 试管编号 + pumpId: 溶液id + volume: 容量 + // 关于温度 + temperature: 温度 + // 关于时间 + time: 时间 + + shelfId: 试管架id + } + */ } diff --git a/src/main/java/com/qyft/gd/service/CMDService.java b/src/main/java/com/qyft/gd/service/CMDService.java index 940e66b..38e1d81 100644 --- a/src/main/java/com/qyft/gd/service/CMDService.java +++ b/src/main/java/com/qyft/gd/service/CMDService.java @@ -11,9 +11,10 @@ import com.qyft.gd.model.vo.WebsocketResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.HashMap; -import java.util.Map; +import java.sql.Array; +import java.util.*; import java.util.function.Function; +import java.util.function.Supplier; @Service public class CMDService { @@ -44,89 +45,125 @@ public class CMDService { commandMap.put(Commands.GET_LIQUID_AMOUNT, this::getLiquidAmount); commandMap.put(Commands.MOVE_TUBE, this::moveTube); } - +// 移动单个试管 private Boolean moveTube(CMDForm cmdForm) { //TODO 执行指令 return true; } - +// 当前溶液数量 private Boolean getLiquidAmount(CMDForm cmdForm) { //TODO 执行指令 return true; } - +// 机械臂 private Boolean moveMachineArm(CMDForm cmdForm) { //TODO 执行指令 return true; } - +// 装回盖子 private Boolean putBackCap(CMDForm cmdForm) { //TODO 执行指令 return true; } - +// 取试管架盖 private Boolean takeOffCap(CMDForm cmdForm) { //TODO 执行指令 return true; } - +// 移出异常 private Boolean moveToHeatArea(CMDForm cmdForm) { //TODO 执行指令 return true; } - +// 移至异常 private Boolean moveToUnusual(CMDForm cmdForm) { - //TODO 执行指令 + //TODO 获取异常区位置 return true; } - +// 拍照 private Boolean takePhoto(CMDForm cmdForm) { - //TODO 执行指令 - return true; + List> cmdList = new ArrayList<>(); + cmdList.add(() -> deviceService.takePhoto()); + return run(cmdList); } - +// 停止加热 private Boolean stopHeat(CMDForm cmdForm) { - //TODO 执行指令 - return true; + List> cmdList = new ArrayList<>(); + cmdList.add(() -> deviceService.stopHeating()); + return run(cmdList); } - +// 开始加热 private Boolean startHeat(CMDForm cmdForm) { - //TODO 执行指令 - return true; + List> cmdList = new ArrayList<>(); + cmdList.add(() -> deviceService.startHeating((Integer) cmdForm.getParams().get("time"))); + return run(cmdList); } - +// 摇匀 private Boolean shakeUp(CMDForm cmdForm) { - //TODO 执行指令 - return true; - } - + deviceService.startShaking(); + Timer timer = new Timer(); + TimerTask task = new TimerTask() { + @Override + public void run() { + deviceService.stopShaking(); + } + }; + timer.schedule(task, 1000); + return true; + } +// 检查加液位状态(是否被占用) private Boolean checkActionArea(CMDForm cmdForm) { - //TODO 执行指令 - return true; + List> cmdList = new ArrayList<>(); + return run(cmdList); } - +// 移至加液 private Boolean moveToActionArea(CMDForm cmdForm) { - //TODO 执行指令 - return true; - } + List> cmdList = new ArrayList<>(); + // TODO 加液位是否被占用 + cmdList.add(() -> deviceService.moveRailArmToPoint(1, 2, 3)); + cmdList.add(() -> deviceService.openClaw()); + // TODO 检查加液位是否被占用 + cmdList.add(() -> deviceService.moveRailArmToPoint(4,5,6)); + return run(cmdList); + } +// 恒温 private Boolean keepHeat(CMDForm cmdForm) { - //TODO 执行指令 - return true; + List> cmdList = new ArrayList<>(); + // TODO 加热到指定温度,通过传感器使其恒温 + return run(cmdList); } - +// 加液 private Boolean injectFluid(CMDForm cmdForm) { - //TODO 执行指令 - return true; - } - + List> cmdList = new ArrayList<>(); + // TODO 计算出试管的坐标 + // TODO 获取加液位是否有试管(传感器?) + // TODO 溶液id 容量 + Map params = cmdForm.getParams(); + cmdList.add(() -> deviceService.addLiquid((Integer) params.get("pumpId"), ((Integer)params.get("volume")))); + return run(cmdList); + } +// 放下托盘 private boolean downTray(CMDForm cmdForm) { - //TODO 执行指令 - return false; + List> cmdList = new ArrayList<>(); + cmdList.add(() -> deviceService.moveTrayToHeight(0)); + return run(cmdList); } - + // 抬起托盘 private boolean upTray(CMDForm cmdForm) { - //TODO 执行指令 + List> cmdList = new ArrayList<>(); + cmdList.add(() -> deviceService.moveTrayToHeight(20)); + return run(cmdList); + } + + private boolean run(List> cmdList) { + // 执行所有命令 + for (Supplier command : cmdList) { + boolean result = command.get(); + if (!result) { + return false; + } + } return true; }