package com.iflytop.sgs.hardware.service; import com.iflytop.sgs.common.service.GDDeviceStatusService; import com.iflytop.sgs.hardware.drivers.DIDriver.InputDetectDriver; import com.iflytop.sgs.hardware.drivers.HeaterRodDriver; import com.iflytop.sgs.hardware.drivers.LeisaiServoDriver; import com.iflytop.sgs.hardware.drivers.MiniServoDriver.MiniServoDriver; import com.iflytop.sgs.hardware.drivers.StepMotorDriver.StepMotorCtrlDriver; import com.iflytop.sgs.hardware.exception.HardwareException; import com.iflytop.sgs.hardware.type.IO.InputIOMId; import com.iflytop.sgs.hardware.type.Servo.LeisaiServoMId; import com.iflytop.sgs.hardware.type.StepMotor.StepMotorMId; import com.iflytop.sgs.hardware.type.driver.HeaterRodSlavedId; import com.iflytop.sgs.hardware.utils.Math.StepMotorConverter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Slf4j @Component @RequiredArgsConstructor public class GDDeviceStatusServiceImpl implements GDDeviceStatusService { private final InputDetectDriver inputDetectDriver; private final HeaterRodDriver heaterRodDriver; private final StepMotorCtrlDriver stepMotorCtrlDriver; private final MiniServoDriver miniServoDriver; private final LeisaiServoDriver leisaiServoDriver; /** * 获取步进电机的原点状态 * @param stepMotorMId * @return true 在原点 false 不在原点 */ public Boolean stepMotorIsOrigin(StepMotorMId stepMotorMId) throws HardwareException { return stepMotorCtrlDriver.stepMotorReadIoState(stepMotorMId, 0); } /** * 获取XY 伺服的原点状态 * @param mid * @return * @throws HardwareException */ public Boolean getXYServoIsOrigin(LeisaiServoMId mid) throws HardwareException { return leisaiServoDriver.readIoState(mid, 0); } /** * 获取传感器信号 * @param inputIOMIdStr * @return * @throws HardwareException */ public Boolean getInputState(String inputIOMIdStr) throws HardwareException { InputIOMId inputIOMId = InputIOMId.valueOf(inputIOMIdStr); return inputDetectDriver.getIOState(inputIOMId); } /** * 获取加热棒温度 * @param heaterRodSlavedIdStr * @return * @throws Exception */ public Double getHeaterRodTemperature(String heaterRodSlavedIdStr) throws Exception { HeaterRodSlavedId heaterRodSlavedId=HeaterRodSlavedId.valueOf(heaterRodSlavedIdStr); return heaterRodDriver.getTemperature(heaterRodSlavedId); } /** * 获取电机位置 * @param stepMotorMIdStr * @return * @throws HardwareException */ public Double getStepMotorPostion(String stepMotorMIdStr) throws HardwareException { StepMotorMId stepMotorMId=StepMotorMId.valueOf(stepMotorMIdStr); Integer motorPosition = stepMotorCtrlDriver.stepMotorReadPos(stepMotorMId); Double realPosition = StepMotorConverter.toUserPosition(motorPosition); return realPosition; } /** * 获取伺服类电机位置 * @param mid * @return * @throws HardwareException */ public Double getXYServoPosition(LeisaiServoMId mid) throws HardwareException { int servoPosition = leisaiServoDriver.readPosition(mid); return StepMotorConverter.toUserPosition(servoPosition); } }