From c881a61d61e0b7d666beb6015d5673bf0d56b9bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Mon, 5 May 2025 17:20:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 +- .../iflytop/gd/app/cmd/debug/DebugPumpStart.java | 48 ++++++++++++++++++++++ .../gd/app/config/A8kCanBusConnectionConfig.java | 32 +++++++++++++++ .../drivers/MiniServoDriver/MiniServoMId.java | 2 +- .../drivers/StepMotorDriver/StepMotorMId.java | 2 +- src/main/resources/application-dev.yml | 5 +++ 6 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/iflytop/gd/app/cmd/debug/DebugPumpStart.java create mode 100644 src/main/java/com/iflytop/gd/app/config/A8kCanBusConnectionConfig.java diff --git a/build.gradle b/build.gradle index 41858ae..cec976d 100644 --- a/build.gradle +++ b/build.gradle @@ -37,14 +37,13 @@ dependencies { implementation 'org.springframework.statemachine:spring-statemachine-core:4.0.0' implementation 'org.xerial:sqlite-jdbc:3.48.0.0' implementation 'org.springframework.boot:spring-boot-starter-validation:3.4.5' + implementation("org.java-websocket:Java-WebSocket:1.6.0") compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' - - implementation("org.java-websocket:Java-WebSocket:1.6.0") } tasks.named('test') { diff --git a/src/main/java/com/iflytop/gd/app/cmd/debug/DebugPumpStart.java b/src/main/java/com/iflytop/gd/app/cmd/debug/DebugPumpStart.java new file mode 100644 index 0000000..d0cc338 --- /dev/null +++ b/src/main/java/com/iflytop/gd/app/cmd/debug/DebugPumpStart.java @@ -0,0 +1,48 @@ +package com.iflytop.gd.app.cmd.debug; + +import com.iflytop.gd.app.core.BaseCommandHandler; +import com.iflytop.gd.app.model.dto.CmdDTO; +import com.iflytop.gd.app.service.DeviceCommandService; +import com.iflytop.gd.common.annotation.CommandMapping; +import com.iflytop.gd.common.cmd.CommandFuture; +import com.iflytop.gd.common.cmd.DeviceCommand; +import com.iflytop.gd.common.cmd.DeviceCommandGenerator; +import com.iflytop.gd.common.enums.cmd.CmdDevice; +import com.iflytop.gd.common.enums.cmd.CmdDirection; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * 加液泵 启动加液泵 + */ +@Slf4j +@Component +@RequiredArgsConstructor +@CommandMapping("debug_pump_start") +public class DebugPumpStart extends BaseCommandHandler { + private final DeviceCommandService deviceCommandService; + + @Override + public void handle(CmdDTO cmdDTO) throws Exception { + String pumpId = cmdDTO.getStringParam("pumpId"); + String direction = cmdDTO.getStringParam("direction"); + Double volume = cmdDTO.getDoubleParam("volume"); + CmdDirection directionEnum = CmdDirection.valueOf(direction); + CmdDevice pumpDevice = CmdDevice.valueOf(pumpId); + DeviceCommand deviceCommand; + switch (pumpDevice) { + case CmdDevice.acid_pump_1 -> deviceCommand = DeviceCommandGenerator.acidPump1Move(directionEnum, volume); + case CmdDevice.acid_pump_2 -> deviceCommand = DeviceCommandGenerator.acidPump2Move(directionEnum, volume); + case CmdDevice.acid_pump_3 -> deviceCommand = DeviceCommandGenerator.acidPump3Move(directionEnum, volume); + case CmdDevice.acid_pump_4 -> deviceCommand = DeviceCommandGenerator.acidPump4Move(directionEnum, volume); + case CmdDevice.acid_pump_5 -> deviceCommand = DeviceCommandGenerator.acidPump5Move(directionEnum, volume); + case CmdDevice.acid_pump_6 -> deviceCommand = DeviceCommandGenerator.acidPump6Move(directionEnum, volume); + case CmdDevice.acid_pump_7 -> deviceCommand = DeviceCommandGenerator.acidPump7Move(directionEnum, volume); + case CmdDevice.acid_pump_8 -> deviceCommand = DeviceCommandGenerator.acidPump8Move(directionEnum, volume); + default -> throw new RuntimeException("pumpId 未找到"); + } + CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand); + commandWait(deviceCommandFuture); + } +} diff --git a/src/main/java/com/iflytop/gd/app/config/A8kCanBusConnectionConfig.java b/src/main/java/com/iflytop/gd/app/config/A8kCanBusConnectionConfig.java new file mode 100644 index 0000000..bf4c7be --- /dev/null +++ b/src/main/java/com/iflytop/gd/app/config/A8kCanBusConnectionConfig.java @@ -0,0 +1,32 @@ +package com.iflytop.gd.app.config; + +import com.iflytop.gd.hardware.comm.can.A8kCanBusConnection; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class A8kCanBusConnectionConfig { + //协议参考 https://iflytop1.feishu.cn/wiki/QFwVwGnI8iYp0fk20W9cnpYAnkg + @Value("${iflytophald.ip}") + String ip; + + @Value("${iflytophald.cmdch.port}") + Integer cmdchPort; + + @Value("${iflytophald.datach.port}") + Integer datachPort; + + public String getDatachUrl(String datachannel) { + return String.format("ws://%s:%d/%s", ip, datachPort, datachannel); + } + + public String getCmdChBaseUrl(String cmdchannel) { + return String.format("http://%s:%d/%s", ip, cmdchPort, cmdchannel); + } + + @Bean + A8kCanBusConnection a8kCanBusBaseService() { + return new A8kCanBusConnection(getCmdChBaseUrl("zexcan"), getDatachUrl("zexcan")); + } +} diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/MiniServoMId.java b/src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/MiniServoMId.java index d4aef63..48802b3 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/MiniServoMId.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/MiniServoDriver/MiniServoMId.java @@ -13,7 +13,7 @@ public enum MiniServoMId { final public MId mid; MiniServoMId(MId mid) { - Assert.isTrue(this.name().equals(mid.name()),"MiniServoMid Init fail"); +// Assert.isTrue(this.name().equals(mid.name()),"MiniServoMid Init fail"); this.mid = mid; } diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorMId.java b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorMId.java index 82f56a0..9ae768d 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorMId.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/StepMotorDriver/StepMotorMId.java @@ -30,7 +30,7 @@ public enum StepMotorMId { final public MId mid; StepMotorMId(MId mid) { - Assert.isTrue(this.name().equals(mid.name()),"StepMotorMId init fail"); +// Assert.isTrue(this.name().equals(mid.name()),"StepMotorMId init fail"); this.mid = mid; } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 89075e7..014034c 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -33,4 +33,9 @@ springdoc: command_bus: +device.enableCanBus: true +iflytophald: + ip: 192.168.1.140 + cmdch.port: 19004 + datach.port: 19005 \ No newline at end of file