diff --git a/src/main/java/com/iflytop/sgs/hardware/command/handlers/AcidPumpHandler.java b/src/main/java/com/iflytop/sgs/hardware/command/handlers/AcidPumpHandler.java deleted file mode 100644 index d396782..0000000 --- a/src/main/java/com/iflytop/sgs/hardware/command/handlers/AcidPumpHandler.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.iflytop.sgs.hardware.command.handlers; - -import com.iflytop.sgs.common.cmd.DeviceCommand; -import com.iflytop.sgs.common.enums.cmd.CmdAction; -import com.iflytop.sgs.common.enums.cmd.CmdDevice; -import com.iflytop.sgs.common.enums.cmd.CmdDirection; -import com.iflytop.sgs.hardware.command.CommandHandler; -import com.iflytop.sgs.hardware.drivers.StepMotorDriver.AcidPumpDriver; -import com.iflytop.sgs.hardware.type.StepMotor.StepMotorDirect; -import com.iflytop.sgs.hardware.type.StepMotor.StepMotorMId; -import com.iflytop.sgs.hardware.type.MId; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -import static com.iflytop.sgs.common.enums.cmd.CmdDirection.backward; -import static com.iflytop.sgs.common.enums.cmd.CmdDirection.forward; - -@Slf4j -@Component -@RequiredArgsConstructor -public class AcidPumpHandler extends CommandHandler { - private final AcidPumpDriver driver_; - - private final Map stepMotorMIdMap_ = Map.ofEntries( -// Map.entry(CmdDevice.acid_pump_1, StepMotorMId.ACID_PUMP_1_MOTOR_MID), -// Map.entry(CmdDevice.acid_pump_2, StepMotorMId.ACID_PUMP_2_MOTOR_MID), -// Map.entry(CmdDevice.acid_pump_3, StepMotorMId.ACID_PUMP_3_MOTOR_MID), -// Map.entry(CmdDevice.acid_pump_4, StepMotorMId.ACID_PUMP_4_MOTOR_MID), -// Map.entry(CmdDevice.acid_pump_5, StepMotorMId.ACID_PUMP_5_MOTOR_MID), -// Map.entry(CmdDevice.acid_pump_6, StepMotorMId.ACID_PUMP_6_MOTOR_MID), -// Map.entry(CmdDevice.acid_pump_7, StepMotorMId.ACID_PUMP_7_MOTOR_MID), -// Map.entry(CmdDevice.acid_pump_8, StepMotorMId.ACID_PUMP_8_MOTOR_MID) - ); - private final Map supportCmdDeviceMIdMap = stepMotorMIdMap_.entrySet().stream(). - collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().mid)); - private final Set supportActions = Set.of(CmdAction.set, CmdAction.move_by, CmdAction.stop, CmdAction.rotate); - - @Override - protected Map getSupportCmdDeviceMIdMap() - { - return supportCmdDeviceMIdMap; - } - - @Override - protected Set getSupportActions() { - return supportActions; - } - - public StepMotorDirect getMotorDirect(CmdDirection cmdDirection) - { - return switch (cmdDirection) { - case forward -> StepMotorDirect.FORWARD; - case backward -> StepMotorDirect.BACKWARD; - }; - } - - @Override - public void handleCommand(DeviceCommand command) throws Exception { - // 发送命令 - StepMotorMId stepMotorMId = stepMotorMIdMap_.get(command.getDevice()); - if (command.getAction() == CmdAction.origin) { - driver_.moveToHome(stepMotorMId); - } - else if(command.getAction() == CmdAction.stop) { - driver_.stop(stepMotorMId); - } - else if(command.getAction() == CmdAction.move) { - double position = command.getParam().getPosition(); - driver_.moveTo(stepMotorMId, position); - } - else if(command.getAction() == CmdAction.move_by) { - - double distance = command.getParam().getPosition(); - - driver_.moveBy(stepMotorMId, distance); - } - else if(command.getAction() == CmdAction.rotate) { - CmdDirection cmdDirection = command.getParam().getDirection(); - - StepMotorDirect direct = getMotorDirect(cmdDirection); - driver_.rotate(stepMotorMId, direct); - } - else if(command.getAction() == CmdAction.set) { - Double speed = command.getParam().getSpeed(); - if(speed != null) { - driver_.setSpeed(stepMotorMId, speed); - } - } - } -} diff --git a/src/main/java/com/iflytop/sgs/hardware/command/handlers/ChimeBuzzerHandler.java b/src/main/java/com/iflytop/sgs/hardware/command/handlers/ChimeBuzzerHandler.java new file mode 100644 index 0000000..dab3efc --- /dev/null +++ b/src/main/java/com/iflytop/sgs/hardware/command/handlers/ChimeBuzzerHandler.java @@ -0,0 +1,4 @@ +package com.iflytop.sgs.hardware.command.handlers; + +public class ChimeBuzzerHandler { +} diff --git a/src/main/java/com/iflytop/sgs/hardware/command/handlers/DoorHandler.java b/src/main/java/com/iflytop/sgs/hardware/command/handlers/DoorHandler.java deleted file mode 100644 index 6f5734f..0000000 --- a/src/main/java/com/iflytop/sgs/hardware/command/handlers/DoorHandler.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.iflytop.sgs.hardware.command.handlers; - -import com.iflytop.sgs.common.cmd.DeviceCommand; -import com.iflytop.sgs.common.enums.cmd.CmdAction; -import com.iflytop.sgs.common.enums.cmd.CmdDevice; -import com.iflytop.sgs.hardware.command.CommandHandler; -import com.iflytop.sgs.hardware.drivers.StepMotorDriver.DoorDriver; -import com.iflytop.sgs.hardware.type.StepMotor.StepMotorMId; -import com.iflytop.sgs.hardware.type.MId; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -@Slf4j -@Component -@RequiredArgsConstructor -public class DoorHandler extends CommandHandler { - private final DoorDriver driver_; - - private final Map stepMotorMIdMap_ = Map.ofEntries( -// Map.entry(CmdDevice.door_motor, StepMotorMId.DOOR_MOTOR_MID) - ); - private final Map supportCmdDeviceMIdMap = stepMotorMIdMap_.entrySet().stream(). - collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().mid)); - private final Set supportActions = Set.of(CmdAction.set, CmdAction.origin, CmdAction.move, CmdAction.move_by, CmdAction.stop); - - @Override - protected Map getSupportCmdDeviceMIdMap() - { - return supportCmdDeviceMIdMap; - } - - @Override - protected Set getSupportActions() { - return supportActions; - } - - @Override - public void handleCommand(DeviceCommand command) throws Exception { - // 发送命令 - StepMotorMId stepMotorMId = stepMotorMIdMap_.get(command.getDevice()); - if (command.getAction() == CmdAction.origin) { - driver_.moveToHome(stepMotorMId); - } - else if(command.getAction() == CmdAction.stop) { - driver_.stop(stepMotorMId); - } - else if(command.getAction() == CmdAction.move) { - double position = command.getParam().getPosition(); - driver_.moveTo(stepMotorMId, position); - } - else if(command.getAction() == CmdAction.move_by) { - double distance = command.getParam().getPosition(); - - driver_.moveBy(stepMotorMId, distance); - } - else if(command.getAction() == CmdAction.set) { - Double speed = command.getParam().getSpeed(); - if(speed != null) { - driver_.setSpeed(stepMotorMId, speed); - } - } - } -} - - - - diff --git a/src/main/java/com/iflytop/sgs/hardware/command/handlers/HeaterMotorHandler.java b/src/main/java/com/iflytop/sgs/hardware/command/handlers/HeaterMotorHandler.java deleted file mode 100644 index 7454795..0000000 --- a/src/main/java/com/iflytop/sgs/hardware/command/handlers/HeaterMotorHandler.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.iflytop.sgs.hardware.command.handlers; - -import com.iflytop.sgs.common.cmd.DeviceCommand; -import com.iflytop.sgs.common.enums.cmd.CmdAction; -import com.iflytop.sgs.common.enums.cmd.CmdDevice; -import com.iflytop.sgs.hardware.command.CommandHandler; -import com.iflytop.sgs.hardware.drivers.StepMotorDriver.HeaterMotorDriver; -import com.iflytop.sgs.hardware.type.StepMotor.StepMotorMId; -import com.iflytop.sgs.hardware.type.MId; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -@Slf4j -@Component -@RequiredArgsConstructor -public class HeaterMotorHandler extends CommandHandler { - private final HeaterMotorDriver driver_; - - private final Map stepMotorMIdMap_ = Map.ofEntries( -// Map.entry(CmdDevice.heater_motor_1, StepMotorMId.HEATER_4_MOTOR_MID),//前后端顺序定义不一致,这里做了映射关系 -// Map.entry(CmdDevice.heater_motor_2, StepMotorMId.HEATER_5_MOTOR_MID), -// Map.entry(CmdDevice.heater_motor_3, StepMotorMId.HEATER_6_MOTOR_MID), -// Map.entry(CmdDevice.heater_motor_4, StepMotorMId.HEATER_1_MOTOR_MID), -// Map.entry(CmdDevice.heater_motor_5, StepMotorMId.HEATER_2_MOTOR_MID), -// Map.entry(CmdDevice.heater_motor_6, StepMotorMId.HEATER_3_MOTOR_MID) - ); - private final Map supportCmdDeviceMIdMap = stepMotorMIdMap_.entrySet().stream(). - collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().mid)); - private final Set supportActions = Set.of(CmdAction.set, CmdAction.origin, CmdAction.move, CmdAction.move_by, CmdAction.stop); - - @Override - protected Map getSupportCmdDeviceMIdMap() - { - return supportCmdDeviceMIdMap; - } - - @Override - protected Set getSupportActions() { - return supportActions; - } - - @Override - public void handleCommand(DeviceCommand command) throws Exception { - // 发送命令 - StepMotorMId stepMotorMId = stepMotorMIdMap_.get(command.getDevice()); - if (command.getAction() == CmdAction.origin) { - driver_.moveToHome(stepMotorMId); - } - else if(command.getAction() == CmdAction.stop) { - driver_.stop(stepMotorMId); - } - else if(command.getAction() == CmdAction.move) { - double position = command.getParam().getPosition(); - driver_.moveTo(stepMotorMId, position); - } - else if(command.getAction() == CmdAction.move_by) { - double distance = command.getParam().getPosition(); - - driver_.moveBy(stepMotorMId, distance); - } - else if(command.getAction() == CmdAction.set) { - Double speed = command.getParam().getSpeed(); - if(speed != null) { - driver_.setSpeed(stepMotorMId, speed); - } - } - } -} diff --git a/src/main/java/com/iflytop/sgs/hardware/command/handlers/FanHandler.java b/src/main/java/com/iflytop/sgs/hardware/command/handlers/IOCtrlHandler.java similarity index 97% rename from src/main/java/com/iflytop/sgs/hardware/command/handlers/FanHandler.java rename to src/main/java/com/iflytop/sgs/hardware/command/handlers/IOCtrlHandler.java index 174b5dc..5f09e78 100644 --- a/src/main/java/com/iflytop/sgs/hardware/command/handlers/FanHandler.java +++ b/src/main/java/com/iflytop/sgs/hardware/command/handlers/IOCtrlHandler.java @@ -20,7 +20,7 @@ import java.util.stream.Collectors; @Slf4j @Component @RequiredArgsConstructor -public class FanHandler extends CommandHandler { +public class IOCtrlHandler extends CommandHandler { private final FanDriver fanDriver_; private final Map supportCmdDeviceIOOutputMap = Map.ofEntries( Map.entry(CmdDevice.fan_1, OutputIOMId.DO_FAN1), diff --git a/src/main/java/com/iflytop/sgs/hardware/command/handlers/LiquidPumpHandler.java b/src/main/java/com/iflytop/sgs/hardware/command/handlers/LiquidPumpHandler.java new file mode 100644 index 0000000..6ddd4f3 --- /dev/null +++ b/src/main/java/com/iflytop/sgs/hardware/command/handlers/LiquidPumpHandler.java @@ -0,0 +1,5 @@ +package com.iflytop.sgs.hardware.command.handlers; + +// TODO: Implement the LiquidPumpHandler class to handle liquid pump operations. +public class LiquidPumpHandler { +} diff --git a/src/main/java/com/iflytop/sgs/hardware/command/handlers/LiquidValveHandler.java b/src/main/java/com/iflytop/sgs/hardware/command/handlers/LiquidValveHandler.java new file mode 100644 index 0000000..a2ffadb --- /dev/null +++ b/src/main/java/com/iflytop/sgs/hardware/command/handlers/LiquidValveHandler.java @@ -0,0 +1,5 @@ +package com.iflytop.sgs.hardware.command.handlers; + + +public class LiquidValveHandler { +} diff --git a/src/main/java/com/iflytop/sgs/hardware/command/handlers/MotorHandler.java b/src/main/java/com/iflytop/sgs/hardware/command/handlers/MotorHandler.java new file mode 100644 index 0000000..8938b1d --- /dev/null +++ b/src/main/java/com/iflytop/sgs/hardware/command/handlers/MotorHandler.java @@ -0,0 +1,123 @@ +package com.iflytop.sgs.hardware.command.handlers; + +import com.iflytop.sgs.common.cmd.DeviceCommand; +import com.iflytop.sgs.common.enums.cmd.CmdAction; +import com.iflytop.sgs.common.enums.cmd.CmdDevice; +import com.iflytop.sgs.common.enums.cmd.CmdDirection; +import com.iflytop.sgs.hardware.command.CommandHandler; +import com.iflytop.sgs.hardware.drivers.StepMotorDriver.MotorWrapperDriver; +import com.iflytop.sgs.hardware.type.StepMotor.StepMotorDirect; +import com.iflytop.sgs.hardware.type.StepMotor.StepMotorMId; +import com.iflytop.sgs.hardware.type.MId; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +@Slf4j +@Component +@RequiredArgsConstructor +public class MotorHandler extends CommandHandler { + private final MotorWrapperDriver driver_; + + private final Map stepMotorMIdMap_ = Map.ofEntries( + Map.entry(CmdDevice.door_motor, StepMotorMId.DoorM), + Map.entry(CmdDevice.z_motor, StepMotorMId.ZM), + Map.entry(CmdDevice.liquid_motor, StepMotorMId.LiquidM) // TODO: 蠕动泵后期可能会调整方案 + ); + private final Map supportCmdDeviceMIdMap = stepMotorMIdMap_.entrySet().stream(). + collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().mid)); + + private final Set supportActions = Set.of( + CmdAction.set, + CmdAction.enable, + CmdAction.disable, + CmdAction.open_clamp, + CmdAction.close_clamp, + CmdAction.origin, + CmdAction.move, + CmdAction.move_by, + CmdAction.rotate, + CmdAction.stop); + + @Override + protected Map getSupportCmdDeviceMIdMap() { + return supportCmdDeviceMIdMap; + } + + @Override + protected Set getSupportActions() { + return supportActions; + } + + public StepMotorDirect getMotorDirect(CmdDirection cmdDirection) + { + return switch (cmdDirection) { + case forward -> StepMotorDirect.FORWARD; + case backward -> StepMotorDirect.BACKWARD; + }; + } + + @Override + public void handleCommand(DeviceCommand command) throws Exception { + // 发送命令 + StepMotorMId stepMotorMId = stepMotorMIdMap_.get(command.getDevice()); + + switch (command.getAction()) { + case enable -> { + log.info("Motor {} Enable", stepMotorMId.mid.getDescription()); + driver_.motorEnable(stepMotorMId, true); + } + case disable -> { + log.info("Motor {} Disable", stepMotorMId.mid.getDescription()); + driver_.motorEnable(stepMotorMId, false); + } + case open_clamp -> { + log.info("Motor {} Open Clamp", stepMotorMId.mid.getDescription()); + driver_.openClamp(stepMotorMId); + } + case close_clamp -> { + log.info("Motor {} Close Clamp", stepMotorMId.mid.getDescription()); + driver_.closeClamp(stepMotorMId); + } + case origin -> { + log.info("Motor {} Move To Origin", stepMotorMId.mid.getDescription()); + driver_.moveToHome(stepMotorMId); + } + case move -> { + double position = command.getParam().getPosition(); + log.info("Motor {} Move To Position {}", stepMotorMId.mid.getDescription(), position); + driver_.moveTo(stepMotorMId, position); + } + case move_by -> { + double distance = command.getParam().getPosition(); + log.info("Motor {} Move By Distance {}", stepMotorMId.mid.getDescription(), distance); + driver_.moveBy(stepMotorMId, distance); + } + case rotate -> { + CmdDirection cmdDirection = command.getParam().getDirection(); + StepMotorDirect direct = getMotorDirect(cmdDirection); + log.info("Motor {} Rotate {}", stepMotorMId.mid.getDescription(), direct.name()); + driver_.rotate(stepMotorMId, direct); + } + case stop -> { + log.info("Motor {} Stop", stepMotorMId.mid.getDescription()); + driver_.stop(stepMotorMId); + } + case set -> { + Double speed = command.getParam().getSpeed(); + if (speed != null) { + log.info("Motor {} Set Speed {}", stepMotorMId.mid.getDescription(), speed); + driver_.setSpeed(stepMotorMId, speed); + } + } + } + } +} + + + + diff --git a/src/main/java/com/iflytop/sgs/hardware/command/handlers/ServoHandler.java b/src/main/java/com/iflytop/sgs/hardware/command/handlers/ServoHandler.java new file mode 100644 index 0000000..01bac75 --- /dev/null +++ b/src/main/java/com/iflytop/sgs/hardware/command/handlers/ServoHandler.java @@ -0,0 +1,124 @@ +package com.iflytop.sgs.hardware.command.handlers; + +import com.iflytop.sgs.common.cmd.DeviceCommand; +import com.iflytop.sgs.common.enums.cmd.CmdAction; +import com.iflytop.sgs.common.enums.cmd.CmdDevice; +import com.iflytop.sgs.common.enums.cmd.CmdDirection; +import com.iflytop.sgs.hardware.command.CommandHandler; +import com.iflytop.sgs.hardware.drivers.StepMotorDriver.MotorWrapperDriver; +import com.iflytop.sgs.hardware.type.MId; +import com.iflytop.sgs.hardware.type.StepMotor.StepMotorDirect; +import com.iflytop.sgs.hardware.type.StepMotor.StepMotorMId; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + + +@Slf4j +@Component +@RequiredArgsConstructor +public class ServoHandler extends CommandHandler { + private final MotorWrapperDriver driver_; + + private final Map stepMotorMIdMap_ = Map.ofEntries( + Map.entry(CmdDevice.door_motor, StepMotorMId.DoorM), + Map.entry(CmdDevice.z_motor, StepMotorMId.ZM), + Map.entry(CmdDevice.liquid_motor, StepMotorMId.LiquidM) // TODO: 蠕动泵后期可能会调整方案 + ); + private final Map supportCmdDeviceMIdMap = stepMotorMIdMap_.entrySet().stream(). + collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().mid)); + + private final Set supportActions = Set.of( + CmdAction.set, + CmdAction.enable, + CmdAction.disable, + CmdAction.open_clamp, + CmdAction.close_clamp, + CmdAction.origin, + CmdAction.move, + CmdAction.move_by, + CmdAction.rotate, + CmdAction.stop); + + @Override + protected Map getSupportCmdDeviceMIdMap() { + return supportCmdDeviceMIdMap; + } + + @Override + protected Set getSupportActions() { + return supportActions; + } + + public StepMotorDirect getMotorDirect(CmdDirection cmdDirection) + { + return switch (cmdDirection) { + case forward -> StepMotorDirect.FORWARD; + case backward -> StepMotorDirect.BACKWARD; + }; + } + + @Override + public void handleCommand(DeviceCommand command) throws Exception { + // 发送命令 + StepMotorMId stepMotorMId = stepMotorMIdMap_.get(command.getDevice()); + + switch (command.getAction()) { + case enable -> { + log.info("Motor {} Enable", stepMotorMId.mid.getDescription()); + driver_.motorEnable(stepMotorMId, true); + } + case disable -> { + log.info("Motor {} Disable", stepMotorMId.mid.getDescription()); + driver_.motorEnable(stepMotorMId, false); + } + case open_clamp -> { + log.info("Motor {} Open Clamp", stepMotorMId.mid.getDescription()); + driver_.openClamp(stepMotorMId); + } + case close_clamp -> { + log.info("Motor {} Close Clamp", stepMotorMId.mid.getDescription()); + driver_.closeClamp(stepMotorMId); + } + case origin -> { + log.info("Motor {} Move To Origin", stepMotorMId.mid.getDescription()); + driver_.moveToHome(stepMotorMId); + } + case move -> { + double position = command.getParam().getPosition(); + log.info("Motor {} Move To Position {}", stepMotorMId.mid.getDescription(), position); + driver_.moveTo(stepMotorMId, position); + } + case move_by -> { + double distance = command.getParam().getPosition(); + log.info("Motor {} Move By Distance {}", stepMotorMId.mid.getDescription(), distance); + driver_.moveBy(stepMotorMId, distance); + } + case rotate -> { + CmdDirection cmdDirection = command.getParam().getDirection(); + StepMotorDirect direct = getMotorDirect(cmdDirection); + log.info("Motor {} Rotate {}", stepMotorMId.mid.getDescription(), direct.name()); + driver_.rotate(stepMotorMId, direct); + } + case stop -> { + log.info("Motor {} Stop", stepMotorMId.mid.getDescription()); + driver_.stop(stepMotorMId); + } + case set -> { + Double speed = command.getParam().getSpeed(); + if (speed != null) { + log.info("Motor {} Set Speed {}", stepMotorMId.mid.getDescription(), speed); + driver_.setSpeed(stepMotorMId, speed); + } + } + } + } +} + + + + diff --git a/src/main/java/com/iflytop/sgs/hardware/command/handlers/ShakeMotorHandler.java b/src/main/java/com/iflytop/sgs/hardware/command/handlers/ShakeMotorHandler.java deleted file mode 100644 index 0967212..0000000 --- a/src/main/java/com/iflytop/sgs/hardware/command/handlers/ShakeMotorHandler.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.iflytop.sgs.hardware.command.handlers; - - -import com.iflytop.sgs.common.cmd.DeviceCommand; -import com.iflytop.sgs.common.enums.cmd.CmdAction; -import com.iflytop.sgs.common.enums.cmd.CmdDevice; -import com.iflytop.sgs.hardware.command.CommandHandler; -import com.iflytop.sgs.hardware.drivers.StepMotorDriver.ShakeMotorDriver; -import com.iflytop.sgs.hardware.type.StepMotor.StepMotorDirect; -import com.iflytop.sgs.hardware.type.StepMotor.StepMotorMId; -import com.iflytop.sgs.hardware.type.MId; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -@Slf4j -@Component -@RequiredArgsConstructor -public class ShakeMotorHandler extends CommandHandler { - private final ShakeMotorDriver driver_; - - private final Map stepMotorMIdMap_ = Map.ofEntries( - ); - private final Map supportCmdDeviceMIdMap = stepMotorMIdMap_.entrySet().stream(). - collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().mid)); - - private final Set supportActions = Set.of(CmdAction.start, CmdAction.stop, CmdAction.set, CmdAction.origin); - - - @Override - protected Map getSupportCmdDeviceMIdMap() - { - return supportCmdDeviceMIdMap; - } - - @Override - protected Set getSupportActions() { - return supportActions; - } - - @Override - public void handleCommand(DeviceCommand command) throws Exception { - // 发送命令 - StepMotorMId stepMotorMId = stepMotorMIdMap_.get(command.getDevice()); - - if(command.getAction() == CmdAction.stop) { - driver_.stopShake(stepMotorMId); - } - else if(command.getAction() == CmdAction.set) { - Double speed = command.getParam().getSpeed(); - if(speed != null) { - driver_.setSpeed(stepMotorMId, speed); - } - } - else if (command.getAction() == CmdAction.start) { - StepMotorDirect direct = StepMotorDirect.FORWARD; - driver_.startShake(stepMotorMId, direct); - } - else if(command.getAction() == CmdAction.origin){ - driver_.moveToHome(stepMotorMId); - } - } -} - diff --git a/src/main/java/com/iflytop/sgs/hardware/drivers/StepMotorDriver/DoorDriver.java b/src/main/java/com/iflytop/sgs/hardware/drivers/StepMotorDriver/MotorWrapperDriver.java similarity index 75% rename from src/main/java/com/iflytop/sgs/hardware/drivers/StepMotorDriver/DoorDriver.java rename to src/main/java/com/iflytop/sgs/hardware/drivers/StepMotorDriver/MotorWrapperDriver.java index edadacd..d8ef770 100644 --- a/src/main/java/com/iflytop/sgs/hardware/drivers/StepMotorDriver/DoorDriver.java +++ b/src/main/java/com/iflytop/sgs/hardware/drivers/StepMotorDriver/MotorWrapperDriver.java @@ -2,6 +2,7 @@ package com.iflytop.sgs.hardware.drivers.StepMotorDriver; import com.iflytop.sgs.hardware.config.StepMotorConfig; import com.iflytop.sgs.hardware.exception.HardwareException; +import com.iflytop.sgs.hardware.type.StepMotor.StepMotorDirect; import com.iflytop.sgs.hardware.type.StepMotor.StepMotorMId; import com.iflytop.sgs.hardware.type.StepMotor.StepMotorRegIndex; import com.iflytop.sgs.hardware.utils.Math.StepMotorConverter; @@ -14,7 +15,7 @@ import java.security.InvalidParameterException; @Slf4j @Component @RequiredArgsConstructor -public class DoorDriver{ +public class MotorWrapperDriver { private final StepMotorConfig config_; private final StepMotorCtrlDriver stepMotorCtrlDriver_; @@ -34,18 +35,32 @@ public class DoorDriver{ } // ==== ==== ==== ==== ==== ==== Ctrl ==== ==== ==== ==== ==== ==== - public void motorEnable(StepMotorMId stepMotorMId, Boolean enable) throws Exception { + public void motorEnable(StepMotorMId stepMotorMId, Boolean enable) throws HardwareException { Integer i_enable = enable ? 1 : 0; stepMotorCtrlDriver_.stepMotorEnable(stepMotorMId, i_enable); } - public void moveToHome(StepMotorMId stepMotorMId) throws Exception { + public void openClamp(StepMotorMId stepMotorMId) throws HardwareException + { + log.info("Motor {} Open Clamp", stepMotorMId.mid.getDescription()); + motorEnable(stepMotorMId, true); + stepMotorCtrlDriver_.stepMotorOpenClamp(stepMotorMId); + } + + public void closeClamp(StepMotorMId stepMotorMId) throws HardwareException + { + log.info("Motor {} Close Clamp", stepMotorMId.mid.getDescription()); + motorEnable(stepMotorMId, true); + stepMotorCtrlDriver_.stepMotorCloseClamp(stepMotorMId); + } + + public void moveToHome(StepMotorMId stepMotorMId) throws HardwareException { log.info("Motor {} Move To Home", stepMotorMId.mid.getDescription()); motorEnable(stepMotorMId, true); stepMotorCtrlDriver_.stepMotorEasyMoveToZeroBlock(stepMotorMId); } - public void moveTo(StepMotorMId stepMotorMId, double position) throws Exception { + public void moveTo(StepMotorMId stepMotorMId, double position) throws HardwareException { // 检查位置是否合法 if (Math.abs(position) > Math.abs(config_.getMaxLimit(stepMotorMId))) { log.error("Motor {} Move To position out of range, position {}, limit {}", stepMotorMId.mid.getDescription(), position, config_.getMaxLimit(stepMotorMId)); @@ -58,7 +73,7 @@ public class DoorDriver{ stepMotorCtrlDriver_.stepMotorEasyMoveToBlock(stepMotorMId, motorPosition); } - public void moveBy(StepMotorMId stepMotorMId, double distance) throws Exception { + public void moveBy(StepMotorMId stepMotorMId, double distance) throws HardwareException { // 检查位置是否合法 if (Math.abs(distance) > Math.abs(config_.getMaxLimit(stepMotorMId))) { log.error("Motor {} Move By distance out of range, distance {}, limit {}", stepMotorMId.mid.getDescription(), distance, config_.getMaxLimit(stepMotorMId)); @@ -71,7 +86,13 @@ public class DoorDriver{ stepMotorCtrlDriver_.stepMotorEasyMoveByBlock(stepMotorMId, motorPosition); } - public void stop(StepMotorMId stepMotorMId) throws Exception { + public void rotate(StepMotorMId stepMotorMId, StepMotorDirect direct) throws Exception + { + motorEnable(stepMotorMId, true); + stepMotorCtrlDriver_.stepMotorEasyRotate(stepMotorMId, direct.getValue()); + } + + public void stop(StepMotorMId stepMotorMId) throws HardwareException { log.info("Motor {} Stop", stepMotorMId.mid.getDescription()); stepMotorCtrlDriver_.stepMotorStop(stepMotorMId); motorEnable(stepMotorMId, true); diff --git a/src/main/java/com/iflytop/sgs/hardware/type/StepMotor/DeviceStepMotorId.java b/src/main/java/com/iflytop/sgs/hardware/type/StepMotor/DeviceStepMotorId.java index 47df1b3..6c574d5 100644 --- a/src/main/java/com/iflytop/sgs/hardware/type/StepMotor/DeviceStepMotorId.java +++ b/src/main/java/com/iflytop/sgs/hardware/type/StepMotor/DeviceStepMotorId.java @@ -3,25 +3,6 @@ package com.iflytop.sgs.hardware.type.StepMotor; public enum DeviceStepMotorId { // door(StepMotorMId.DOOR_MOTOR_MID, "门"), -// shake_motor(StepMotorMId.SHAKE_MOTOR_MID, "摇匀电机"), -// tray_motor(StepMotorMId.TRAY_MOTOR_MID, "托盘电机"), -// gantry_x(StepMotorMId.HBOT_X_MOTOR_MID, "龙门架X轴"), -// gantry_y(StepMotorMId.HBOT_Y_MOTOR_MID, "龙门架Y轴"), -// gantry_z(StepMotorMId.HBOT_Z_MOTOR_MID, "龙门架Z轴"), -// heater_motor_1(StepMotorMId.HEATER_1_MOTOR_MID, "加热位顶升电机1"), -// heater_motor_2(StepMotorMId.HEATER_2_MOTOR_MID, "加热位顶升电机2"), -// heater_motor_3(StepMotorMId.HEATER_3_MOTOR_MID, "加热位顶升电机3"), -// heater_motor_4(StepMotorMId.HEATER_4_MOTOR_MID, "加热位顶升电机4"), -// heater_motor_5(StepMotorMId.HEATER_5_MOTOR_MID, "加热位顶升电机5"), -// heater_motor_6(StepMotorMId.HEATER_6_MOTOR_MID, "加热位顶升电机6"), -// acid_pump_1(StepMotorMId.ACID_PUMP_1_MOTOR_MID, "加酸泵电机1"), -// acid_pump_2(StepMotorMId.ACID_PUMP_2_MOTOR_MID, "加酸泵电机2"), -// acid_pump_3(StepMotorMId.ACID_PUMP_3_MOTOR_MID, "加酸泵电机3"), -// acid_pump_4(StepMotorMId.ACID_PUMP_4_MOTOR_MID, "加酸泵电机4"), -// acid_pump_5(StepMotorMId.ACID_PUMP_5_MOTOR_MID, "加酸泵电机5"), -// acid_pump_6(StepMotorMId.ACID_PUMP_6_MOTOR_MID, "加酸泵电机6"), -// acid_pump_7(StepMotorMId.ACID_PUMP_7_MOTOR_MID, "加酸泵电机7"), -// acid_pump_8(StepMotorMId.ACID_PUMP_8_MOTOR_MID, "加酸泵电机8"), ; private StepMotorMId stepMotorMId;