Browse Source

feat:实现调试业务指令

# Conflicts:
#	src/main/java/com/iflytop/gd/debug/services/cmds/ColdTrapStartHeatingCommandHandler.java
#	src/main/java/com/iflytop/gd/debug/services/cmds/ColdTrapStartRecycleCommandHandler.java
#	src/main/java/com/iflytop/gd/debug/services/cmds/ColdTrapStartRefrigerationCommandHandler.java
#	src/main/java/com/iflytop/gd/debug/services/cmds/ColdTrapStopHeatingCommandHandler.java
#	src/main/java/com/iflytop/gd/debug/services/cmds/ColdTrapStopRecycleCommandHandler.java
#	src/main/java/com/iflytop/gd/debug/services/cmds/ColdTrapStopRefrigerationCommandHandler.java
#	src/main/java/com/iflytop/gd/debug/services/cmds/CoverElevatorLiftDownCommandHandler.java
#	src/main/java/com/iflytop/gd/debug/services/cmds/DoorCloseCommandHandler.java
tags/freeze
黄翔 3 months ago
parent
commit
e410ec50f9
  1. 10
      src/main/java/com/iflytop/gd/common/notification/Notification.java
  2. 2
      src/main/java/com/iflytop/gd/debug/services/cmds/ColdTrapStartHeatingCommandHandler.java
  3. 26
      src/main/java/com/iflytop/gd/debug/services/cmds/CoverElevatorLiftDownCommandHandler.java
  4. 6
      src/main/java/com/iflytop/gd/debug/services/cmds/CoverElevatorLiftUpCommandHandler.java
  5. 12
      src/main/java/com/iflytop/gd/infrastructure/devices/physical/PhysicalColdTray.java
  6. 6
      src/main/java/com/iflytop/gd/infrastructure/devices/physical/PhysicalLiquidFillingArm.java
  7. 4
      src/main/java/com/iflytop/gd/infrastructure/devices/physical/PhysicalTransportationArm.java
  8. 12
      src/main/java/com/iflytop/gd/infrastructure/devices/virtual/VirtualColdTray.java
  9. 4
      src/main/java/com/iflytop/gd/infrastructure/devices/virtual/VirtualLiquidFillingArm.java
  10. 6
      src/main/java/com/iflytop/gd/infrastructure/devices/virtual/VirtualTransportationArm.java
  11. 13
      src/main/java/com/iflytop/gd/system/constants/DistanceUnit.java
  12. 15
      src/main/java/com/iflytop/gd/system/constants/SpeedUnit.java
  13. 28
      src/main/java/com/iflytop/gd/system/constants/VelocityUnit.java
  14. 12
      src/main/java/com/iflytop/gd/system/devices/ColdTray.java
  15. 4
      src/main/java/com/iflytop/gd/system/devices/LiquidFillingArm.java
  16. 4
      src/main/java/com/iflytop/gd/system/devices/TransportationArm.java

10
src/main/java/com/iflytop/gd/common/notification/Notification.java

@ -50,6 +50,16 @@ public class Notification {
return new Notification(cmdDTO.getCommandId(), cmdDTO.getCommand(), "info", title, ""); return new Notification(cmdDTO.getCommandId(), cmdDTO.getCommand(), "info", title, "");
} }
public static Notification infoHandleStartNotification(CmdDTO cmdDTO) {
String title = String.format("开始执行{}指令", cmdDTO.getCommand());
return new Notification(cmdDTO.getCommandId(), cmdDTO.getCommand(), "info", title, "");
}
public static Notification infoHandleEndNotification(CmdDTO cmdDTO) {
String title = String.format("{}指令执行完成", cmdDTO.getCommand());
return new Notification(cmdDTO.getCommandId(), cmdDTO.getCommand(), "info", title, "");
}
/** /**
* 创建Warn级别通知 * 创建Warn级别通知

2
src/main/java/com/iflytop/gd/debug/services/cmds/ColdTrapStartHeatingCommandHandler.java

@ -2,8 +2,10 @@ package com.iflytop.gd.debug.services.cmds;
import com.iflytop.gd.app.core.BaseCommandHandler; import com.iflytop.gd.app.core.BaseCommandHandler;
import com.iflytop.gd.app.model.dto.CmdDTO; import com.iflytop.gd.app.model.dto.CmdDTO;
import com.iflytop.gd.app.service.WebSocketService;
import com.iflytop.gd.common.annotation.CommandMapping; import com.iflytop.gd.common.annotation.CommandMapping;
import com.iflytop.gd.common.cmd.CommandHandler; import com.iflytop.gd.common.cmd.CommandHandler;
import com.iflytop.gd.common.notification.Notification;
import com.iflytop.gd.system.devices.ColdTray; import com.iflytop.gd.system.devices.ColdTray;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

26
src/main/java/com/iflytop/gd/debug/services/cmds/CoverElevatorLiftDownCommandHandler.java

@ -2,17 +2,37 @@ package com.iflytop.gd.debug.services.cmds;
import com.iflytop.gd.app.core.BaseCommandHandler; import com.iflytop.gd.app.core.BaseCommandHandler;
import com.iflytop.gd.app.model.dto.CmdDTO; import com.iflytop.gd.app.model.dto.CmdDTO;
import com.iflytop.gd.app.service.WebSocketService;
import com.iflytop.gd.common.annotation.CommandMapping; import com.iflytop.gd.common.annotation.CommandMapping;
import com.iflytop.gd.common.cmd.CommandHandler; import com.iflytop.gd.common.cmd.CommandHandler;
import com.iflytop.gd.common.notification.Notification;
import com.iflytop.gd.system.constants.VelocityUnit;
import com.iflytop.gd.system.devices.StepMotor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/** /**
* 处理拍子电机下降指令 * 处理拍子电机下降指令
*/ */
@Slf4j
@Component
@RequiredArgsConstructor
@CommandMapping("debug_cover_elevator_lift_down") @CommandMapping("debug_cover_elevator_lift_down")
public class CoverElevatorLiftDownCommandHandler extends BaseCommandHandler {
public class CoverElevatorLiftDownCommandHandler implements CommandHandler {
private final WebSocketService webSocketService;
private final StepMotor stepMotor;
@Override @Override
public void handle(CmdDTO cmdDTO) { public void handle(CmdDTO cmdDTO) {
webSocketService.pushNotification(Notification.infoHandleStartNotification(cmdDTO));
try {
Integer velocity = cmdDTO.getIntegerParam("velocity");
String velocityUnitStr = cmdDTO.getStringParam("velocityUnit");
VelocityUnit velocityUnit = VelocityUnit.toVelocityUnit(velocityUnitStr);
stepMotor.setDefaultVelocity(velocityUnit.toMM_PER_SEC(velocity));
} catch (Exception e) {
webSocketService.pushNotification(Notification.errorNotification(cmdDTO, e));
}
webSocketService.pushNotification(Notification.infoHandleEndNotification(cmdDTO));
} }
} }

6
src/main/java/com/iflytop/gd/debug/services/cmds/CoverElevatorLiftUpCommandHandler.java

@ -4,11 +4,17 @@ import com.iflytop.gd.app.core.BaseCommandHandler;
import com.iflytop.gd.app.model.dto.CmdDTO; import com.iflytop.gd.app.model.dto.CmdDTO;
import com.iflytop.gd.common.annotation.CommandMapping; import com.iflytop.gd.common.annotation.CommandMapping;
import com.iflytop.gd.common.cmd.CommandHandler; import com.iflytop.gd.common.cmd.CommandHandler;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/** /**
* 处理拍子电机抬升指令 * 处理拍子电机抬升指令
*/ */
@Slf4j
@Component
@RequiredArgsConstructor
@CommandMapping("debug_cover_elevator_lift_up") @CommandMapping("debug_cover_elevator_lift_up")
public class CoverElevatorLiftUpCommandHandler extends BaseCommandHandler { public class CoverElevatorLiftUpCommandHandler extends BaseCommandHandler {
@Override @Override

12
src/main/java/com/iflytop/gd/infrastructure/devices/physical/PhysicalColdTray.java

@ -12,32 +12,32 @@ public class PhysicalColdTray implements ColdTray {
} }
@Override @Override
public boolean openRecycle() {
public boolean startRecycle() {
return false; return false;
} }
@Override @Override
public boolean closeRecycle() {
public boolean stopRecycle() {
return false; return false;
} }
@Override @Override
public boolean openHeating() {
public boolean startHeating() {
return false; return false;
} }
@Override @Override
public boolean closeHeating() {
public boolean stopHeating() {
return false; return false;
} }
@Override @Override
public boolean openRefrigeration() {
public boolean startRefrigeration() {
return false; return false;
} }
@Override @Override
public boolean closeRefrigeration() {
public boolean stopRefrigeration() {
return false; return false;
} }
} }

6
src/main/java/com/iflytop/gd/infrastructure/devices/physical/PhysicalLiquidFillingArm.java

@ -4,13 +4,11 @@ package com.iflytop.gd.infrastructure.devices.physical;
import com.iflytop.gd.infrastructure.drivers.ModuleId; import com.iflytop.gd.infrastructure.drivers.ModuleId;
import com.iflytop.gd.system.constants.LiquidFillArmMotorIndex; import com.iflytop.gd.system.constants.LiquidFillArmMotorIndex;
import com.iflytop.gd.system.constants.RotationDirection; import com.iflytop.gd.system.constants.RotationDirection;
import com.iflytop.gd.system.constants.SpeedUnit;
import com.iflytop.gd.system.constants.VelocityUnit;
import com.iflytop.gd.system.devices.LiquidFillingArm; import com.iflytop.gd.system.devices.LiquidFillingArm;
import com.iflytop.gd.system.devices.StepMotor; import com.iflytop.gd.system.devices.StepMotor;
import com.iflytop.gd.system.drivers.CommandBus; import com.iflytop.gd.system.drivers.CommandBus;
import com.iflytop.gd.system.models.Point3D; import com.iflytop.gd.system.models.Point3D;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
/** /**
* 物理液体加注机械臂 * 物理液体加注机械臂
@ -35,7 +33,7 @@ public class PhysicalLiquidFillingArm implements LiquidFillingArm {
} }
@Override @Override
public void setRotationSpeed(Integer speed, SpeedUnit speedUnit) {
public void setRotationSpeed(Integer speed, VelocityUnit speedUnit) {
} }
} }

4
src/main/java/com/iflytop/gd/infrastructure/devices/physical/PhysicalTransportationArm.java

@ -3,7 +3,7 @@ package com.iflytop.gd.infrastructure.devices.physical;
import com.iflytop.gd.infrastructure.drivers.ModuleId; import com.iflytop.gd.infrastructure.drivers.ModuleId;
import com.iflytop.gd.system.constants.Dim; import com.iflytop.gd.system.constants.Dim;
import com.iflytop.gd.system.constants.DistanceUnit; import com.iflytop.gd.system.constants.DistanceUnit;
import com.iflytop.gd.system.constants.SpeedUnit;
import com.iflytop.gd.system.constants.VelocityUnit;
import com.iflytop.gd.system.devices.StepMotor; import com.iflytop.gd.system.devices.StepMotor;
import com.iflytop.gd.system.devices.TransportationArm; import com.iflytop.gd.system.devices.TransportationArm;
import com.iflytop.gd.system.drivers.CommandBus; import com.iflytop.gd.system.drivers.CommandBus;
@ -41,7 +41,7 @@ public class PhysicalTransportationArm implements TransportationArm {
} }
@Override @Override
public void setSpeed(Dim dim, Integer speed, SpeedUnit unit) {
public void setSpeed(Dim dim, Integer speed, VelocityUnit unit) {
} }
} }

12
src/main/java/com/iflytop/gd/infrastructure/devices/virtual/VirtualColdTray.java

@ -12,32 +12,32 @@ public class VirtualColdTray implements ColdTray {
} }
@Override @Override
public boolean openRecycle() {
public boolean startRecycle() {
return false; return false;
} }
@Override @Override
public boolean closeRecycle() {
public boolean stopRecycle() {
return false; return false;
} }
@Override @Override
public boolean openHeating() {
public boolean startHeating() {
return false; return false;
} }
@Override @Override
public boolean closeHeating() {
public boolean stopHeating() {
return false; return false;
} }
@Override @Override
public boolean openRefrigeration() {
public boolean startRefrigeration() {
return false; return false;
} }
@Override @Override
public boolean closeRefrigeration() {
public boolean stopRefrigeration() {
return false; return false;
} }
} }

4
src/main/java/com/iflytop/gd/infrastructure/devices/virtual/VirtualLiquidFillingArm.java

@ -2,7 +2,7 @@ package com.iflytop.gd.infrastructure.devices.virtual;
import com.iflytop.gd.system.constants.LiquidFillArmMotorIndex; import com.iflytop.gd.system.constants.LiquidFillArmMotorIndex;
import com.iflytop.gd.system.constants.RotationDirection; import com.iflytop.gd.system.constants.RotationDirection;
import com.iflytop.gd.system.constants.SpeedUnit;
import com.iflytop.gd.system.constants.VelocityUnit;
import com.iflytop.gd.system.devices.LiquidFillingArm; import com.iflytop.gd.system.devices.LiquidFillingArm;
import com.iflytop.gd.system.models.Point3D; import com.iflytop.gd.system.models.Point3D;
@ -21,6 +21,6 @@ public class VirtualLiquidFillingArm implements LiquidFillingArm {
} }
@Override @Override
public void setRotationSpeed(Integer speed, SpeedUnit speedUnit) {
public void setRotationSpeed(Integer speed, VelocityUnit speedUnit) {
} }
} }

6
src/main/java/com/iflytop/gd/infrastructure/devices/virtual/VirtualTransportationArm.java

@ -5,13 +5,11 @@ import com.iflytop.gd.common.result.ResultCode;
import com.iflytop.gd.infrastructure.drivers.ModuleId; import com.iflytop.gd.infrastructure.drivers.ModuleId;
import com.iflytop.gd.system.constants.Dim; import com.iflytop.gd.system.constants.Dim;
import com.iflytop.gd.system.constants.DistanceUnit; import com.iflytop.gd.system.constants.DistanceUnit;
import com.iflytop.gd.system.constants.SpeedUnit;
import com.iflytop.gd.system.constants.VelocityUnit;
import com.iflytop.gd.system.devices.StepMotor; import com.iflytop.gd.system.devices.StepMotor;
import com.iflytop.gd.system.devices.TransportationArm; import com.iflytop.gd.system.devices.TransportationArm;
import com.iflytop.gd.system.exceptions.CommandExecTimeoutException; import com.iflytop.gd.system.exceptions.CommandExecTimeoutException;
import com.iflytop.gd.system.exceptions.HardwareErrorException; import com.iflytop.gd.system.exceptions.HardwareErrorException;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
@ -75,7 +73,7 @@ public class VirtualTransportationArm implements TransportationArm {
} }
@Override @Override
public void setSpeed(Dim dim, Integer speed, SpeedUnit unit) {
public void setSpeed(Dim dim, Integer speed, VelocityUnit unit) {
try { try {
stepMotors.get(dim).setDefaultVelocity(unit.toMM_PER_SEC(speed)); stepMotors.get(dim).setDefaultVelocity(unit.toMM_PER_SEC(speed));
} catch (HardwareErrorException e) { } catch (HardwareErrorException e) {

13
src/main/java/com/iflytop/gd/system/constants/DistanceUnit.java

@ -14,4 +14,17 @@ public enum DistanceUnit {
return value; return value;
} }
public static DistanceUnit toDistanceUnit(String unitString) {
if ("mm".equals(unitString)) {
return MM;
}
if ("cm".equals(unitString)) {
return CM;
}
throw new IllegalArgumentException("Unknown distance unit " + unitString);
}
} }

15
src/main/java/com/iflytop/gd/system/constants/SpeedUnit.java

@ -1,15 +0,0 @@
package com.iflytop.gd.system.constants;
/**
* 移动速度单位
*/
public enum SpeedUnit {
MM_PER_SEC, CM_PER_SEC;
public Integer toMM_PER_SEC(Integer value) {
if (this == SpeedUnit.CM_PER_SEC) {
return value * 10;
}
return value;
}
}

28
src/main/java/com/iflytop/gd/system/constants/VelocityUnit.java

@ -0,0 +1,28 @@
package com.iflytop.gd.system.constants;
/**
* 移动速度单位
*/
public enum VelocityUnit {
MM_PER_SEC, CM_PER_SEC;
public Integer toMM_PER_SEC(Integer value) {
if (this == VelocityUnit.CM_PER_SEC) {
return value * 10;
}
return value;
}
public static VelocityUnit toVelocityUnit(String unitString) {
if ("mm/s".equals(unitString)) {
return VelocityUnit.MM_PER_SEC;
}
if ("cm/s".equals(unitString)) {
return VelocityUnit.CM_PER_SEC;
}
throw new IllegalArgumentException("Unrecognized SpeedUnit: " + unitString);
}
}

12
src/main/java/com/iflytop/gd/system/devices/ColdTray.java

@ -16,39 +16,39 @@ public interface ColdTray {
* 开启循环 * 开启循环
* @return * @return
*/ */
boolean openRecycle();
boolean startRecycle();
/** /**
* 关闭循环 * 关闭循环
* @return * @return
*/ */
boolean closeRecycle();
boolean stopRecycle();
/** /**
* 开启加热 * 开启加热
* @return * @return
*/ */
boolean openHeating();
boolean startHeating();
/** /**
* 关闭加热 * 关闭加热
* @return * @return
*/ */
boolean closeHeating();
boolean stopHeating();
/** /**
* 开启制冷 * 开启制冷
* @return * @return
*/ */
boolean openRefrigeration();
boolean startRefrigeration();
/** /**
* 关闭制冷 * 关闭制冷
* @return * @return
*/ */
boolean closeRefrigeration();
boolean stopRefrigeration();
} }

4
src/main/java/com/iflytop/gd/system/devices/LiquidFillingArm.java

@ -2,7 +2,7 @@ package com.iflytop.gd.system.devices;
import com.iflytop.gd.system.constants.LiquidFillArmMotorIndex; import com.iflytop.gd.system.constants.LiquidFillArmMotorIndex;
import com.iflytop.gd.system.constants.RotationDirection; import com.iflytop.gd.system.constants.RotationDirection;
import com.iflytop.gd.system.constants.SpeedUnit;
import com.iflytop.gd.system.constants.VelocityUnit;
import com.iflytop.gd.system.models.Point3D; import com.iflytop.gd.system.models.Point3D;
@ -34,5 +34,5 @@ public interface LiquidFillingArm {
* @param speedUnit 速率单位 * @param speedUnit 速率单位
* @return 是否设置成功 * @return 是否设置成功
*/ */
void setRotationSpeed(Integer speed, SpeedUnit speedUnit);
void setRotationSpeed(Integer speed, VelocityUnit speedUnit);
} }

4
src/main/java/com/iflytop/gd/system/devices/TransportationArm.java

@ -2,7 +2,7 @@ package com.iflytop.gd.system.devices;
import com.iflytop.gd.system.constants.Dim; import com.iflytop.gd.system.constants.Dim;
import com.iflytop.gd.system.constants.DistanceUnit; import com.iflytop.gd.system.constants.DistanceUnit;
import com.iflytop.gd.system.constants.SpeedUnit;
import com.iflytop.gd.system.constants.VelocityUnit;
public interface TransportationArm { public interface TransportationArm {
@ -36,5 +36,5 @@ public interface TransportationArm {
* @param unit 速率单位 * @param unit 速率单位
* @return 是否设置完成 * @return 是否设置完成
*/ */
void setSpeed(Dim dim, Integer speed, SpeedUnit unit);
void setSpeed(Dim dim, Integer speed, VelocityUnit unit);
} }
Loading…
Cancel
Save