You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
3.3 KiB

2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
  1. package com.iflytop.sgs.hardware.service;
  2. import com.iflytop.sgs.common.service.GDDeviceStatusService;
  3. import com.iflytop.sgs.hardware.drivers.DIDriver.InputDetectDriver;
  4. import com.iflytop.sgs.hardware.drivers.HeaterRodDriver;
  5. import com.iflytop.sgs.hardware.drivers.LeisaiServoDriver;
  6. import com.iflytop.sgs.hardware.drivers.MiniServoDriver.MiniServoDriver;
  7. import com.iflytop.sgs.hardware.drivers.StepMotorDriver.StepMotorCtrlDriver;
  8. import com.iflytop.sgs.hardware.exception.HardwareException;
  9. import com.iflytop.sgs.hardware.type.IO.InputIOMId;
  10. import com.iflytop.sgs.hardware.type.Servo.LeisaiServoMId;
  11. import com.iflytop.sgs.hardware.type.StepMotor.StepMotorMId;
  12. import com.iflytop.sgs.hardware.type.driver.HeaterRodSlavedId;
  13. import com.iflytop.sgs.hardware.utils.Math.StepMotorConverter;
  14. import lombok.RequiredArgsConstructor;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.stereotype.Component;
  17. @Slf4j
  18. @Component
  19. @RequiredArgsConstructor
  20. public class GDDeviceStatusServiceImpl implements GDDeviceStatusService {
  21. private final InputDetectDriver inputDetectDriver;
  22. private final HeaterRodDriver heaterRodDriver;
  23. private final StepMotorCtrlDriver stepMotorCtrlDriver;
  24. private final MiniServoDriver miniServoDriver;
  25. private final LeisaiServoDriver leisaiServoDriver;
  26. /**
  27. * 获取步进电机的原点状态
  28. * @param stepMotorMId
  29. * @return true 在原点 false 不在原点
  30. */
  31. public Boolean stepMotorIsOrigin(StepMotorMId stepMotorMId) throws HardwareException {
  32. return stepMotorCtrlDriver.stepMotorReadIoState(stepMotorMId, 0);
  33. }
  34. /**
  35. * 获取XY 伺服的原点状态
  36. * @param mid
  37. * @return
  38. * @throws HardwareException
  39. */
  40. public Boolean getXYServoIsOrigin(LeisaiServoMId mid) throws HardwareException
  41. {
  42. return leisaiServoDriver.readIoState(mid, 0);
  43. }
  44. /**
  45. * 获取传感器信号
  46. * @param inputIOMIdStr
  47. * @return
  48. * @throws HardwareException
  49. */
  50. public Boolean getInputState(String inputIOMIdStr) throws HardwareException {
  51. InputIOMId inputIOMId = InputIOMId.valueOf(inputIOMIdStr);
  52. return inputDetectDriver.getIOState(inputIOMId);
  53. }
  54. /**
  55. * 获取加热棒温度
  56. * @param heaterRodSlavedIdStr
  57. * @return
  58. * @throws Exception
  59. */
  60. public Double getHeaterRodTemperature(String heaterRodSlavedIdStr) throws Exception {
  61. HeaterRodSlavedId heaterRodSlavedId=HeaterRodSlavedId.valueOf(heaterRodSlavedIdStr);
  62. return heaterRodDriver.getTemperature(heaterRodSlavedId);
  63. }
  64. /**
  65. * 获取电机位置
  66. * @param stepMotorMIdStr
  67. * @return
  68. * @throws HardwareException
  69. */
  70. public Double getStepMotorPostion(String stepMotorMIdStr) throws HardwareException {
  71. StepMotorMId stepMotorMId=StepMotorMId.valueOf(stepMotorMIdStr);
  72. Integer motorPosition = stepMotorCtrlDriver.stepMotorReadPos(stepMotorMId);
  73. Double realPosition = StepMotorConverter.toUserPosition(motorPosition);
  74. return realPosition;
  75. }
  76. /**
  77. * 获取伺服类电机位置
  78. * @param mid
  79. * @return
  80. * @throws HardwareException
  81. */
  82. public Double getXYServoPosition(LeisaiServoMId mid) throws HardwareException {
  83. int servoPosition = leisaiServoDriver.readPosition(mid);
  84. return StepMotorConverter.toUserPosition(servoPosition);
  85. }
  86. }