From 11d4be466c98eac221926886045a5e6fdd3396a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Mon, 12 May 2025 02:34:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=95=B4=E7=90=86=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/iflytop/gd/app/controller/SystemController.java | 7 +++++++ src/main/java/com/iflytop/gd/app/service/DeviceInitService.java | 7 ++++--- src/main/java/com/iflytop/gd/app/service/SystemConfigService.java | 6 ++++++ .../iflytop/gd/hardware/drivers/MiniServoDriver/ClawDriver.java | 8 +++++--- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/iflytop/gd/app/controller/SystemController.java b/src/main/java/com/iflytop/gd/app/controller/SystemController.java index 939596c..81b88e9 100644 --- a/src/main/java/com/iflytop/gd/app/controller/SystemController.java +++ b/src/main/java/com/iflytop/gd/app/controller/SystemController.java @@ -28,6 +28,13 @@ public class SystemController { return Result.success(); } + @Operation(summary = "模拟向硬件写入完毕") + @GetMapping("/initComplete") + public Result setInitComplete(Boolean initComplete) { + deviceStateService.setInitComplete(initComplete); + return Result.success(); + } + @Operation(summary = "系统状态") @GetMapping("/device-status") public Result getDeviceStatus() { diff --git a/src/main/java/com/iflytop/gd/app/service/DeviceInitService.java b/src/main/java/com/iflytop/gd/app/service/DeviceInitService.java index 232eb27..d69c0e8 100644 --- a/src/main/java/com/iflytop/gd/app/service/DeviceInitService.java +++ b/src/main/java/com/iflytop/gd/app/service/DeviceInitService.java @@ -34,15 +34,17 @@ public class DeviceInitService { public void init() { new Thread(() -> { try { - initDeviceSetData(); initDeviceState(); + initDeviceSetData(); + + deviceStateService.setInitComplete(true); } catch (Exception ignored) { } }).start(); } public void initDeviceSetData() { - if (deviceStateService.getDeviceState().isVirtual()) { + if (deviceStateService.getDeviceState().isVirtual() || deviceStateService.getDeviceState().isInitComplete()) { return; } try { @@ -86,6 +88,5 @@ public class DeviceInitService { solutionBucket.add(new SolutionContainerState(container.getId(), ContainerCode.valueOf(container.getCode()), ContainerType.neutralization)); } } - deviceStateService.setInitComplete(true); } } diff --git a/src/main/java/com/iflytop/gd/app/service/SystemConfigService.java b/src/main/java/com/iflytop/gd/app/service/SystemConfigService.java index 335380c..197c3b2 100644 --- a/src/main/java/com/iflytop/gd/app/service/SystemConfigService.java +++ b/src/main/java/com/iflytop/gd/app/service/SystemConfigService.java @@ -19,6 +19,12 @@ import java.io.InputStreamReader; public class SystemConfigService extends ServiceImpl { private final SystemConfigMapper systemConfigMapper; + private final DeviceStateService deviceStateService; + + + public void setInitComplete(boolean initComplete) { + deviceStateService.setInitComplete(initComplete); + } /** * 设置系统日期和时间。 diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/ClawDriver.java b/src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/ClawDriver.java index e7e84d6..0d93d66 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/ClawDriver.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/ClawDriver.java @@ -1,5 +1,6 @@ package com.iflytop.gd.hardware.drivers.MiniServoDriver; +import com.iflytop.gd.hardware.exception.HardwareException; import com.iflytop.gd.hardware.type.Servo.MiniServoMId; import com.iflytop.gd.hardware.utils.Math.ServoPositionConverter; import lombok.RequiredArgsConstructor; @@ -81,13 +82,14 @@ public class ClawDriver { } // ==== ==== ==== ==== ==== ==== Ctrl ==== ==== ==== ==== ==== ==== - public void moveToHome(MiniServoMId servoMid) throws Exception + public void moveToHome(MiniServoMId servoMid) throws HardwareException { log.info("[ {} ] moveToHome", servoMid.mid.getDescription()); + this.moveTo(servoMid, MIN_DISTANCE); } - public void moveTo(MiniServoMId servoMid, double position) throws Exception + public void moveTo(MiniServoMId servoMid, double position) throws HardwareException { // 检查位置是否合法 if (position < MIN_DISTANCE || position > MAX_DISTANCE) { @@ -101,7 +103,7 @@ public class ClawDriver { miniServoDriver.miniServoEnable(servoMid, 0); } - public void stop(MiniServoMId servoMid) throws Exception { + public void stop(MiniServoMId servoMid) throws HardwareException { log.info("[ {} ] stop", servoMid.mid.getDescription()); miniServoDriver.miniServoStop(servoMid); miniServoDriver.miniServoEnable(servoMid, 0);