Browse Source

修改电机控制

master
HSZ_HeSongZhen 2 months ago
parent
commit
2ab7962eb9
  1. 95
      src/main/java/com/iflytop/sgs/hardware/command/handlers/AcidPumpHandler.java
  2. 4
      src/main/java/com/iflytop/sgs/hardware/command/handlers/ChimeBuzzerHandler.java
  3. 72
      src/main/java/com/iflytop/sgs/hardware/command/handlers/DoorHandler.java
  4. 73
      src/main/java/com/iflytop/sgs/hardware/command/handlers/HeaterMotorHandler.java
  5. 2
      src/main/java/com/iflytop/sgs/hardware/command/handlers/IOCtrlHandler.java
  6. 5
      src/main/java/com/iflytop/sgs/hardware/command/handlers/LiquidPumpHandler.java
  7. 5
      src/main/java/com/iflytop/sgs/hardware/command/handlers/LiquidValveHandler.java
  8. 123
      src/main/java/com/iflytop/sgs/hardware/command/handlers/MotorHandler.java
  9. 124
      src/main/java/com/iflytop/sgs/hardware/command/handlers/ServoHandler.java
  10. 68
      src/main/java/com/iflytop/sgs/hardware/command/handlers/ShakeMotorHandler.java
  11. 33
      src/main/java/com/iflytop/sgs/hardware/drivers/StepMotorDriver/MotorWrapperDriver.java
  12. 19
      src/main/java/com/iflytop/sgs/hardware/type/StepMotor/DeviceStepMotorId.java

95
src/main/java/com/iflytop/sgs/hardware/command/handlers/AcidPumpHandler.java

@ -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<CmdDevice, StepMotorMId> 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<CmdDevice, MId> supportCmdDeviceMIdMap = stepMotorMIdMap_.entrySet().stream().
collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().mid));
private final Set<CmdAction> supportActions = Set.of(CmdAction.set, CmdAction.move_by, CmdAction.stop, CmdAction.rotate);
@Override
protected Map<CmdDevice, MId> getSupportCmdDeviceMIdMap()
{
return supportCmdDeviceMIdMap;
}
@Override
protected Set<CmdAction> 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);
}
}
}
}

4
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 {
}

72
src/main/java/com/iflytop/sgs/hardware/command/handlers/DoorHandler.java

@ -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<CmdDevice, StepMotorMId> stepMotorMIdMap_ = Map.ofEntries(
// Map.entry(CmdDevice.door_motor, StepMotorMId.DOOR_MOTOR_MID)
);
private final Map<CmdDevice, MId> supportCmdDeviceMIdMap = stepMotorMIdMap_.entrySet().stream().
collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().mid));
private final Set<CmdAction> supportActions = Set.of(CmdAction.set, CmdAction.origin, CmdAction.move, CmdAction.move_by, CmdAction.stop);
@Override
protected Map<CmdDevice, MId> getSupportCmdDeviceMIdMap()
{
return supportCmdDeviceMIdMap;
}
@Override
protected Set<CmdAction> 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);
}
}
}
}

73
src/main/java/com/iflytop/sgs/hardware/command/handlers/HeaterMotorHandler.java

@ -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<CmdDevice, StepMotorMId> 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<CmdDevice, MId> supportCmdDeviceMIdMap = stepMotorMIdMap_.entrySet().stream().
collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().mid));
private final Set<CmdAction> supportActions = Set.of(CmdAction.set, CmdAction.origin, CmdAction.move, CmdAction.move_by, CmdAction.stop);
@Override
protected Map<CmdDevice, MId> getSupportCmdDeviceMIdMap()
{
return supportCmdDeviceMIdMap;
}
@Override
protected Set<CmdAction> 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);
}
}
}
}

2
src/main/java/com/iflytop/sgs/hardware/command/handlers/FanHandler.java → 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<CmdDevice, OutputIOMId> supportCmdDeviceIOOutputMap = Map.ofEntries(
Map.entry(CmdDevice.fan_1, OutputIOMId.DO_FAN1),

5
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 {
}

5
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 {
}

123
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<CmdDevice, StepMotorMId> 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<CmdDevice, MId> supportCmdDeviceMIdMap = stepMotorMIdMap_.entrySet().stream().
collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().mid));
private final Set<CmdAction> 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<CmdDevice, MId> getSupportCmdDeviceMIdMap() {
return supportCmdDeviceMIdMap;
}
@Override
protected Set<CmdAction> 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);
}
}
}
}
}

124
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<CmdDevice, StepMotorMId> 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<CmdDevice, MId> supportCmdDeviceMIdMap = stepMotorMIdMap_.entrySet().stream().
collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().mid));
private final Set<CmdAction> 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<CmdDevice, MId> getSupportCmdDeviceMIdMap() {
return supportCmdDeviceMIdMap;
}
@Override
protected Set<CmdAction> 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);
}
}
}
}
}

68
src/main/java/com/iflytop/sgs/hardware/command/handlers/ShakeMotorHandler.java

@ -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<CmdDevice, StepMotorMId> stepMotorMIdMap_ = Map.ofEntries(
);
private final Map<CmdDevice, MId> supportCmdDeviceMIdMap = stepMotorMIdMap_.entrySet().stream().
collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().mid));
private final Set<CmdAction> supportActions = Set.of(CmdAction.start, CmdAction.stop, CmdAction.set, CmdAction.origin);
@Override
protected Map<CmdDevice, MId> getSupportCmdDeviceMIdMap()
{
return supportCmdDeviceMIdMap;
}
@Override
protected Set<CmdAction> 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);
}
}
}

33
src/main/java/com/iflytop/sgs/hardware/drivers/StepMotorDriver/DoorDriver.java → 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);

19
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;

Loading…
Cancel
Save