diff --git a/app.db b/app.db index c75b043..5f5a5da 100644 Binary files a/app.db and b/app.db differ diff --git a/src/main/java/a8k/service/app/devicectrl/calibration/HbotSamplePosCalibration.java b/src/main/java/a8k/service/app/devicectrl/calibration/HbotSamplePosCalibration.java index 9fde636..c3b0230 100644 --- a/src/main/java/a8k/service/app/devicectrl/calibration/HbotSamplePosCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/calibration/HbotSamplePosCalibration.java @@ -7,6 +7,10 @@ import a8k.extapi_controler.utils.ExtApiTab; import a8k.service.app.devicectrl.driver.HbotDriver; import a8k.service.app.devicectrl.driver.PipetteCtrlDriver; import a8k.service.app.devicectrl.ctrlservice.HbotCtrlService; +import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver; +import a8k.service.app.devicectrl.driver.type.StepMotorMId; +import a8k.service.app.devicectrl.exdriver.MotorEnableExDriver; +import a8k.service.app.devicectrl.exdriver.TubePreProcesModuleExDriver; import a8k.service.app.devicectrl.param.HbotSamplePosParamMgr; import a8k.type.*; import a8k.type.cfg.Pos2d; @@ -15,6 +19,7 @@ import a8k.type.exception.AppException; import jakarta.annotation.Resource; import org.aspectj.lang.annotation.Aspect; import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @ExtApiTab(cfg = ExtApiTabConfig.HbotSamplePosCalibration) @@ -24,9 +29,13 @@ public class HbotSamplePosCalibration { static Logger logger = org.slf4j.LoggerFactory.getLogger(HbotSamplePosCalibration.class); @Resource - PipetteCtrlDriver pipetteCtrlDriver; + PipetteCtrlDriver pipetteCtrlDriver; @Resource - HbotDriver hbotDriver; + HbotDriver hbotDriver; + @Resource + MotorEnableExDriver motorEnableExDriver; + @Resource + TubePreProcesModuleExDriver tubePreProcesModuleExDriver; @Resource @@ -35,6 +44,8 @@ public class HbotSamplePosCalibration { HbotSamplePosParamMgr hbotSamplePosParamMgr; Boolean stopFlag = false; + @Autowired + private StepMotorCtrlDriver stepMotorCtrlDriver; Boolean checkStopFlag() { if (stopFlag) { @@ -75,8 +86,33 @@ public class HbotSamplePosCalibration { @ExtApiFn(name = "失能相关模块", group = "测试工具", order = 13) public void disableModule() throws AppException { - pipetteCtrlDriver.zMotorEnable(0); - hbotDriver.enable(0); + motorEnableExDriver.forceDisableAllMotor(); + } + + + @ExtApiFn(name = "试管夹具复位", group = "辅助工具", order = 21) + public void tubeClampMoveZero() throws AppException { + + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, 1); + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModShakeM, 1); + stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, 5000); + stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModShakeM, 90, 5000); + stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, 5000); + tubePreProcesModuleExDriver.clampingMReleaseTube(); + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModShakeM, 0); + } + + @ExtApiFn(name = "释放试管", group = "辅助工具", order = 22) + public void releaseTubeClamp() throws AppException { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, 1); + stepMotorCtrlDriver.stepMotorEasyMoveByBlock(StepMotorMId.ShakeModClampingM, 20, 5000); +// tubePreProcesModuleExDriver.clampingMReleaseTube(); + } + + @ExtApiFn(name = "夹紧试管", group = "辅助工具", order = 23) + public void clampTubeClamp() throws AppException { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, 1); + tubePreProcesModuleExDriver.clampingMclampTube(); } diff --git a/src/main/java/a8k/service/app/devicectrl/exdriver/MotorEnableExDriver.java b/src/main/java/a8k/service/app/devicectrl/exdriver/MotorEnableExDriver.java index 71770fd..8024de7 100644 --- a/src/main/java/a8k/service/app/devicectrl/exdriver/MotorEnableExDriver.java +++ b/src/main/java/a8k/service/app/devicectrl/exdriver/MotorEnableExDriver.java @@ -9,9 +9,11 @@ import a8k.service.app.devicectrl.driver.type.MiniServoMId; import a8k.service.app.devicectrl.driver.type.StepMotorMId; import a8k.type.exception.AppException; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Component +@Slf4j public class MotorEnableExDriver { @@ -61,4 +63,36 @@ public class MotorEnableExDriver { } + public void forceDisableAllMotor() { + // StepMotorMId.values() + for (StepMotorMId stepMotorMId : StepMotorMId.values()) { + try { + stepMotorCtrlDriver.stepMotorEnable(stepMotorMId, 0); + } catch (AppException e) { + log.info("disableStepMotor: {} failed, {}", stepMotorMId, e.getMessage()); + } + } + + for (MiniServoMId miniServoMId : MiniServoMId.values()) { + try { + miniServoDriver.miniServoEnable(miniServoMId, 0); + } catch (AppException e) { + log.info("disableMiniServo: {} failed, {}", miniServoMId, e.getMessage()); + } + } + + try { + hbotDriver.enable(0); + } catch (AppException e) { + log.info("hbotDriver disable failed, {}", e.getMessage()); + } + + try { + pipetteCtrlDriver.zMotorEnable(0); + } catch (AppException e) { + log.info("pipetteCtrlDriver: zMotorEnable failed, {}", e.getMessage()); + } + } + + }