From 313c22741611e9630a9ac9ac369ef8fe9f496069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Sat, 10 May 2025 19:45:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E6=AC=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cmd/debug/HoldingJawCloseCommandHandler.java | 36 ++++++++++++++++++++-- .../cmd/debug/HoldingJawOpenCommandHandler.java | 9 +++--- .../PalletElevatorLiftDownCommandHandler.java | 2 +- .../java/com/iflytop/gd/app/model/dto/CmdDTO.java | 3 ++ 4 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/iflytop/gd/app/cmd/debug/HoldingJawCloseCommandHandler.java b/src/main/java/com/iflytop/gd/app/cmd/debug/HoldingJawCloseCommandHandler.java index b8452f9..d2ab8ce 100644 --- a/src/main/java/com/iflytop/gd/app/cmd/debug/HoldingJawCloseCommandHandler.java +++ b/src/main/java/com/iflytop/gd/app/cmd/debug/HoldingJawCloseCommandHandler.java @@ -22,14 +22,44 @@ import java.util.concurrent.CompletableFuture; @CommandMapping("debug_holding_jaw_close") public class HoldingJawCloseCommandHandler extends BaseCommandHandler { private final DeviceCommandService deviceCommandService; + private boolean stop = false; @Override public CompletableFuture handle(CmdDTO cmdDTO) { + this.stop = false; return runAsync(() -> { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.clawMove(34.0); - CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand); - commandWait(deviceCommandFuture); + Double velocity = cmdDTO.getDoubleParam("velocity"); + Double distance = cmdDTO.getDoubleParam("distance"); + Integer times = cmdDTO.getIntegerParam("times"); + if (velocity != null) { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.clawSet(velocity); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand); + commandWait(deviceCommandFuture); + } + if (times != null) { + for (int i = 0; i < times; i++) { + if (stop) { + return; + } + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.clawMove(-distance); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand); + commandWait(deviceCommandFuture); + + DeviceCommandBundle backDeviceCommand = DeviceCommandGenerator.clawMove(distance); + CommandFuture backDeviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), backDeviceCommand); + commandWait(backDeviceCommandFuture); + } + } else { + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.clawMove(-distance); + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand); + commandWait(deviceCommandFuture); + } + }); } + + public synchronized void stop() { + this.stop = true; + } } diff --git a/src/main/java/com/iflytop/gd/app/cmd/debug/HoldingJawOpenCommandHandler.java b/src/main/java/com/iflytop/gd/app/cmd/debug/HoldingJawOpenCommandHandler.java index c09d4df..767278b 100644 --- a/src/main/java/com/iflytop/gd/app/cmd/debug/HoldingJawOpenCommandHandler.java +++ b/src/main/java/com/iflytop/gd/app/cmd/debug/HoldingJawOpenCommandHandler.java @@ -29,7 +29,8 @@ public class HoldingJawOpenCommandHandler extends BaseCommandHandler { this.stop = false; return runAsync(() -> { Double velocity = cmdDTO.getDoubleParam("velocity"); - Double distance = cmdDTO.getDoubleParam("distance"); + Double openDistance = cmdDTO.getDoubleParam("openDistance"); + Double closeDistance = cmdDTO.getDoubleParam("closeDistance"); Integer times = cmdDTO.getIntegerParam("times"); if (velocity != null) { DeviceCommandBundle deviceCommand = DeviceCommandGenerator.clawSet(velocity); @@ -41,16 +42,16 @@ public class HoldingJawOpenCommandHandler extends BaseCommandHandler { if (stop) { return; } - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.clawMove(distance); + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.clawMove(openDistance); CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand); commandWait(deviceCommandFuture); - DeviceCommandBundle backDeviceCommand = DeviceCommandGenerator.clawMove(-distance); + DeviceCommandBundle backDeviceCommand = DeviceCommandGenerator.clawMove(closeDistance); CommandFuture backDeviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), backDeviceCommand); commandWait(backDeviceCommandFuture); } } else { - DeviceCommandBundle deviceCommand = DeviceCommandGenerator.clawMove(distance); + DeviceCommandBundle deviceCommand = DeviceCommandGenerator.clawMove(openDistance); CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand); commandWait(deviceCommandFuture); } diff --git a/src/main/java/com/iflytop/gd/app/cmd/debug/PalletElevatorLiftDownCommandHandler.java b/src/main/java/com/iflytop/gd/app/cmd/debug/PalletElevatorLiftDownCommandHandler.java index 41c9e92..7076536 100644 --- a/src/main/java/com/iflytop/gd/app/cmd/debug/PalletElevatorLiftDownCommandHandler.java +++ b/src/main/java/com/iflytop/gd/app/cmd/debug/PalletElevatorLiftDownCommandHandler.java @@ -31,7 +31,7 @@ public class PalletElevatorLiftDownCommandHandler extends BaseCommandHandler { this.stop = false; return runAsync(() -> { String index = cmdDTO.getStringParam("index"); - Double distance = -cmdDTO.getDoubleParam("distance"); + Double distance = cmdDTO.getDoubleParam("distance"); Double velocity = cmdDTO.getDoubleParam("velocity"); Integer times = cmdDTO.getIntegerParam("times"); DeviceCommandBundle deviceCommand; diff --git a/src/main/java/com/iflytop/gd/app/model/dto/CmdDTO.java b/src/main/java/com/iflytop/gd/app/model/dto/CmdDTO.java index 4220a0a..82a95c2 100644 --- a/src/main/java/com/iflytop/gd/app/model/dto/CmdDTO.java +++ b/src/main/java/com/iflytop/gd/app/model/dto/CmdDTO.java @@ -27,6 +27,7 @@ public class CmdDTO { public Double getDoubleParam(String key) { return Optional.ofNullable(params.get(key)) .map(Object::toString) + .filter(value -> !value.isEmpty()) .map(Double::parseDouble) .orElse(null); } @@ -38,6 +39,7 @@ public class CmdDTO { public Integer getIntegerParam(String key) { return Optional.ofNullable(params.get(key)) .map(Object::toString) + .filter(value -> !value.isEmpty()) .map(Integer::parseInt) .orElse(null); } @@ -45,6 +47,7 @@ public class CmdDTO { public Boolean getBooleanParam(String key) { return Optional.ofNullable(params.get(key)) .map(Object::toString) + .filter(value -> !value.isEmpty()) .map(Boolean::parseBoolean) .orElse(null); }