diff --git a/app.db b/app.db index 7015d9a..2d36357 100644 Binary files a/app.db and b/app.db differ diff --git a/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java b/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java index fbb05cd..453fbf7 100644 --- a/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java +++ b/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java @@ -14,10 +14,10 @@ public enum ExtApiTabConfig { AppReactionResultMgrService("应用数据.反应结果管理", true), //OK MiniServoReferencePointSetting("校准.舵机参考点设置", true), - Hbot2DCodeScanPosCalibration("校准.耗材扫描校准", true), + ReactionPlatesTransmitControlerCalibration("校准.反应板相关位置校准", true), TubeFeedingModulePosCalibration("校准.试管入料校准", true), TubePreProcesPosCalibration("校准.试管预处理校准", true), - ReactionPlatesTransmitControlerCalibration("校准.反应板相关位置校准", true), + Hbot2DCodeScanPosCalibration("校准.耗材扫描校准", true), HbotTipPosCalibration("校准.Tip耗材位置校准", true), HbotLittleBottleConsumableCalibration("校准.小瓶耗材位置校准", true), HbotLargeBottleBSPosCalibration("校准.大瓶BS耗材位置校准", true), diff --git a/src/main/java/a8k/service/app/devicectrl/calibration/HbotTipPosCalibration.java b/src/main/java/a8k/service/app/devicectrl/calibration/HbotTipPosCalibration.java index ce8af66..5ec0f0a 100644 --- a/src/main/java/a8k/service/app/devicectrl/calibration/HbotTipPosCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/calibration/HbotTipPosCalibration.java @@ -10,7 +10,7 @@ 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.param.HbotConsumableParamMgr; -import a8k.service.app.devicectrl.param.HbotFixPosParamMgr; +import a8k.service.app.devicectrl.param.HbotFixedPosParamMgr; import a8k.type.*; import a8k.type.cfg.Pos2d; import a8k.type.cfg.Pos3d; @@ -45,7 +45,7 @@ public class HbotTipPosCalibration { @Resource HbotConsumableParamMgr hbotConsumableParamMgr; @Resource - HbotFixPosParamMgr hbotFixPosParamMgr; + HbotFixedPosParamMgr hbotFixedPosParamMgr; Boolean stopFlag = false; @@ -204,7 +204,7 @@ public class HbotTipPosCalibration { public void calibrateDropTipPos() throws AppException { enableModule(); pipetteCtrlDriver.zMotorMeasureDistance(); - hbotFixPosParamMgr.setDropTipPos(new Pos3d(hbotDriver.readPos().x, hbotDriver.readPos().y, pipetteCtrlDriver.zMotorReadMeasureDistanceResult())); + hbotFixedPosParamMgr.setDropTipPos(new Pos3d(hbotDriver.readPos().x, hbotDriver.readPos().y, pipetteCtrlDriver.zMotorReadMeasureDistanceResult())); disableModule(); } diff --git a/src/main/java/a8k/service/app/devicectrl/calibration/ReactionPlatesTransmitControlerCalibration.java b/src/main/java/a8k/service/app/devicectrl/calibration/ReactionPlatesTransmitControlerCalibration.java index fbcb03e..17d01fa 100644 --- a/src/main/java/a8k/service/app/devicectrl/calibration/ReactionPlatesTransmitControlerCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/calibration/ReactionPlatesTransmitControlerCalibration.java @@ -45,9 +45,9 @@ public class ReactionPlatesTransmitControlerCalibration { @Resource - HbotCtrlService hbotCtrlService; + HbotCtrlService hbotCtrlService; @Resource - HbotFixPosParamMgr hbotFixPosParamMgr; + HbotFixedPosParamMgr hbotFixedPosParamMgr; @Resource MotorEnableExDriver motorEnableExDriver; @@ -129,7 +129,7 @@ public class ReactionPlatesTransmitControlerCalibration { enableModule(); pipetteCtrlDriver.zMotorMeasureDistance(); var pos = new Pos3d(hbotDriver.readPos().x, hbotDriver.readPos().y, pipetteCtrlDriver.zMotorReadMeasureDistanceResult()); - hbotFixPosParamMgr.setDropLiquidPos(pos); + hbotFixedPosParamMgr.setDropLiquidPos(pos); disableModule(); return pos; } diff --git a/src/main/java/a8k/service/app/devicectrl/calibration/TubeFeedingModulePosCalibration.java b/src/main/java/a8k/service/app/devicectrl/calibration/TubeFeedingModulePosCalibration.java index 4a43f53..f4c98ca 100644 --- a/src/main/java/a8k/service/app/devicectrl/calibration/TubeFeedingModulePosCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/calibration/TubeFeedingModulePosCalibration.java @@ -7,12 +7,16 @@ import a8k.hardware.A8kCanBusService; import a8k.service.app.devicectrl.driver.MiniServoDriver; import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver; import a8k.service.app.devicectrl.exdriver.MotorEnableExDriver; +import a8k.service.app.devicectrl.exdriver.MotorMoveZeroExDriver; import a8k.service.app.devicectrl.exdriver.TubeTransportExDriver; -import a8k.service.app.devicectrl.driver.type.MiniServoMId; import a8k.service.app.devicectrl.driver.type.StepMotorMId; import a8k.service.app.devicectrl.ctrlservice.TubeTubeFeedingCtrlService; import a8k.service.app.devicectrl.param.TubeFeedingModuleParamMgr; import a8k.service.db.type.Parameter; +import a8k.type.TubeFeedingModulePos; +import a8k.type.TubeFeedingModuleSetting; +import a8k.type.TubeHolderScanResult; +import a8k.type.ecode.AppCodeError; import a8k.type.exception.AppException; import jakarta.annotation.Resource; import org.springframework.stereotype.Component; @@ -32,31 +36,34 @@ public class TubeFeedingModulePosCalibration { @Resource TubeTubeFeedingCtrlService tubeTubeFeedingCtrlService; @Resource - TubeTransportExDriver tubeTransportExDriver; + TubeTransportExDriver tubeTransportExDriver; @Resource - MiniServoDriver miniServoDriver; + StepMotorCtrlDriver stepMotorCtrlDriver; @Resource - StepMotorCtrlDriver stepMotorCtrlDriver; + MotorEnableExDriver motorEnableExDriver; @Resource - MotorEnableExDriver motorEnableExDriver; + MotorMoveZeroExDriver motorMoveZeroExDriver; - private Integer readFeedingModXMPos() throws AppException { - stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModXM, 1); - return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000); - } - @ExtApiFn(name = "获取所有坐标", group = "基础", order = 1) - public List getParams() throws AppException { - return tubeScanPosMgr.getParams(); + @ExtApiFn(name = "获取相关设定值", group = "基础", order = 1) + public List getSettings() throws AppException { + return tubeScanPosMgr.getSettings(); } + @ExtApiFn(name = "获取相关坐标", group = "基础", order = 1) + public List getPoss() throws AppException { + return tubeScanPosMgr.getPoss(); + } - - // 测试工具 @ExtApiFn(name = "归零", group = "测试工具", order = 11) public void deviceReset() throws AppException { enableModule(); - stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000); + motorMoveZeroExDriver.tubeFeeddingModuleMoveToZero(); + + //预处理归零 + motorEnableExDriver.preProcessRelatedModuleEnable(true); + motorMoveZeroExDriver.preProcessModuleMoveToZero(); + motorEnableExDriver.preProcessRelatedModuleEnable(false); } @ExtApiFn(name = "使能相关模块", group = "测试工具", order = 12) @@ -70,65 +77,75 @@ public class TubeFeedingModulePosCalibration { motorEnableExDriver.preProcessRelatedModuleEnable(false); } + // + // 辅助方法 + // -// -// @ExtApiFn(name = "<平移电机>设置当前位置为<入料位置>", group = "标定试管架位置", order = 21) -// public void setTubeHolderEnterXPos() throws AppException { -// tubeScanPosMgr.setTubeHolderEnterXPos(readFeedingModXMPos()); -// } -// -// @ExtApiFn(name = "<平移电机>设置当前位置为<出料位置>", group = "标定试管架位置", order = 22) -// public void setTubeHolderExitXPos() throws AppException { -// tubeScanPosMgr.setTubeHolderExitXPos(readFeedingModXMPos()); -// } -// -// @ExtApiFn(name = "<平移电机>设置当前位置为<试管架扫描位置>", group = "标定试管架位置", order = 23) -// public void setTubeHolderScanXPos() throws AppException { -// tubeScanPosMgr.setTubeHolderScanXPos(readFeedingModXMPos()); -// } -// -// @ExtApiFn(name = "<平移电机>设置当前位置为<0号试管扫描位置>", group = "标定<试管>位置", order = 24) -// public void setTube0ScanXPos() throws AppException { -// tubeScanPosMgr.setTube0ScanXPos(readFeedingModXMPos()); -// } -// -// @ExtApiFn(name = "<平移电机>设置当前位置为<0试管高度判断位置>", group = "标定<试管>位置", order = 25) -// public void setTube0AltitJudgXPos() throws AppException { -// tubeScanPosMgr.setTube0AltitJudgXPos(readFeedingModXMPos()); -// } -// -// @ExtApiFn(name = "<平移电机>设置当前位置为<0试管存在判断位置>", group = "标定<试管>位置", order = 26) -// public void setTube0ExistJudgXPos() throws AppException { -// tubeScanPosMgr.setTube0ExistJudgXPos(readFeedingModXMPos()); -// } -// - - - - - -// @ExtApiFn(name = "夹紧试管架", group = "校验", order = 31) -// public void scanClampModClamp() throws AppException { -// tubeTransportControler.scanClampModClamp(); -// } -// -// @ExtApiFn(name = "释放试管架", group = "校验", order = 32) -// public void scanClampModRelease() throws AppException { -// tubeTransportControler.scanClampModRelease(); -// } -// -// @ExtApiFn(name = "扫描试管架", group = "校验", order = 33) -// public TubeHolderScanResult scanAll() throws AppException { -// return tubeTubeFeedingModule.scanTubeHodler(); -// } -// -// @ExtApiFn(name = "移动试管X到处理位", group = "校验", order = 33) -// public void moveTubeXToPreProcessPos(Integer xtube) throws AppException { -// tubeTubeFeedingModule.moveTubeToPreProcessPos(xtube); -// } -// -// @ExtApiFn(name = "设置<试管扫描伺服力矩(100-1000)>", group = "其他", order = 41) -// public void setTubeScanServoTorque(Integer torque) throws AppException { -// tubeScanPosMgr.setTubeScanServoTorque(torque); -// } + private Integer readFeedingModXMPos() throws AppException { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModXM, 1); + return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000); + } + + + // + // 设置 + // + + + @ExtApiFn(name = "设置试管扫描旋转舵机扭矩(0->1000)", group = "设置", order = 200) + public void setTubeScanServoTorque(Integer val) throws AppException { + tubeScanPosMgr.setParam(TubeFeedingModuleSetting.TubeScanServoTorque, val); + } + + + Integer tube01pos; + Integer tube10pos; + + @ExtApiFn(name = "标记当前位置为-试管1号位", group = "辅助设置试管间距", order = 201) + public Integer labelPosAsTube01Pos() throws AppException { + tube01pos = readFeedingModXMPos(); + disableModule(); + return tube01pos; + } + + @ExtApiFn(name = "标记当前位置为-试管10号位", group = "辅助设置试管间距", order = 202) + public Integer labelPosAsTube10Pos() throws AppException { + tube10pos = readFeedingModXMPos(); + disableModule(); + return tube10pos; + } + + @ExtApiFn(name = "计算并设置设置试管间距", group = "辅助设置试管间距", order = 203) + public Double setTubeSpacing() throws AppException { + if (tube01pos == null || tube10pos == null) { + throw new AppException(new AppCodeError("未标记试管1号位和10号位")); + } + Double spacing = (tube10pos - tube01pos) / 9.0; + tubeScanPosMgr.setParam(TubeFeedingModuleSetting.TubeSpacing, spacing); + return spacing; + } + + + // + // 标定坐标 + // + @ExtApiFn(name = "标定位置", group = "标定", order = 300) + public void calibratePos(TubeFeedingModulePos posType) throws AppException { + tubeScanPosMgr.setParam(posType, readFeedingModXMPos()); + disableModule(); + } + + // + // 校验 + // + + @ExtApiFn(name = "扫描试管架", group = "校验", order = 400) + public TubeHolderScanResult calibrateScanTubeHolder() throws AppException { + return tubeTubeFeedingCtrlService.scanTubeHodler(); + } + + @ExtApiFn(name = "移动试管到预处理位置", group = "校验", order = 401) + public void calibrateMoveTubeToPreProcessPos(Integer tubeIndex0To9) throws AppException { + tubeTubeFeedingCtrlService.moveTubeToPreProcessPos(tubeIndex0To9); + } } diff --git a/src/main/java/a8k/service/app/devicectrl/calibration/TubePreProcesPosCalibration.java b/src/main/java/a8k/service/app/devicectrl/calibration/TubePreProcesPosCalibration.java index 720d4aa..3ca5b2c 100644 --- a/src/main/java/a8k/service/app/devicectrl/calibration/TubePreProcesPosCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/calibration/TubePreProcesPosCalibration.java @@ -9,6 +9,7 @@ import a8k.service.app.devicectrl.driver.type.MiniServoMId; import a8k.service.app.devicectrl.driver.type.StepMotorMId; import a8k.service.app.devicectrl.ctrlservice.TubePreProcesCtrlService; import a8k.service.app.devicectrl.exdriver.MotorEnableExDriver; +import a8k.service.app.devicectrl.exdriver.MotorMoveZeroExDriver; import a8k.service.app.devicectrl.param.TubePreProcesPosParamMgr; import a8k.type.exception.AppException; import jakarta.annotation.Resource; @@ -31,19 +32,14 @@ public class TubePreProcesPosCalibration { TubePreProcesCtrlService controler; @Resource MotorEnableExDriver motorEnableExDriver; + @Resource + MotorMoveZeroExDriver motorMoveZeroExDriver; //基础工具 @ExtApiFn(name = "归零", group = "测试工具", order = 1) public void deviceReset() throws AppException { enableModule(); - miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV); - stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModGripperZM, overtime); - miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV); - - stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, overtime); - stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, overtime); - stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModShakeM, 90, overtime); - stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModClampingM, posMgr.getShakeClampMotorReleasePos(), overtime); + motorMoveZeroExDriver.preProcessModuleMoveToZero(); } @ExtApiFn(name = "使能相关模块", group = "测试工具", order = 2) @@ -57,25 +53,17 @@ public class TubePreProcesPosCalibration { motorEnableExDriver.tubeFeedRelatedModuleEnable(false); } - // @ExtApiFn(name = "读取夹爪当前位置", group = "测试工具", order = 4) - // public Integer readGripperPos() throws AppException { - // return miniServoControler.miniServoReadPos(MiniServoMId.ShakeModGripperSV); - // } - @ExtApiFn(name = "读取所有设定值", group = "测试工具", order = 5) public TubePreProcesPosParamMgr getPoss() { return posMgr; } - // @ExtApiFn() - // GripperRedundancySpacingForTubeCap - @ExtApiFn(name = "设置夹爪试管盖冗余间距", group = "其他设置", order = 6) + @ExtApiFn(name = "设置夹爪试管盖冗余间距", group = "设置", order = 6) public void setGripperRedundancySpacingForTubeCap(Integer value) { posMgr.setGripperRedundancySpacingForTubeCap(value); } - // // 夹爪标定,校准,校验 // diff --git a/src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java b/src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java index 462396f..ba8235d 100644 --- a/src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java +++ b/src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java @@ -5,7 +5,7 @@ import a8k.hardware.type.a8kcanprotocol.A8kEcode; import a8k.service.app.devicectrl.exdriver.HbotBaseMoveExDriver; import a8k.service.app.devicectrl.driver.PipetteCtrlDriver; import a8k.service.app.devicectrl.param.HbotConsumableParamMgr; -import a8k.service.app.devicectrl.param.HbotFixPosParamMgr; +import a8k.service.app.devicectrl.param.HbotFixedPosParamMgr; import a8k.service.app.devicectrl.param.HbotSamplePosParamMgr; import a8k.type.ConsumableGroup; import a8k.type.HbotSamplePos; @@ -22,9 +22,9 @@ public class HbotCtrlService { static Logger logger = LoggerFactory.getLogger(HbotCtrlService.class); @Resource - HbotFixPosParamMgr hbotFixPosParamMgr; + HbotFixedPosParamMgr hbotFixedPosParamMgr; @Resource - HbotSamplePosParamMgr hbotSamplePosParamMgr; + HbotSamplePosParamMgr hbotSamplePosParamMgr; @Resource HbotConsumableParamMgr hbotConsumableParamMgr; @@ -73,12 +73,12 @@ public class HbotCtrlService { } public void dropTip() throws AppException { - hbotBaseMoveExDriver.hbotMoveTo(hbotFixPosParamMgr.getDropTipPos()); + hbotBaseMoveExDriver.hbotMoveTo(hbotFixedPosParamMgr.getDropTipPos()); pipetteCtrlDriver.putTipBlock(); } public void moveToDropLiquidPos() throws AppException { - hbotBaseMoveExDriver.hbotMoveTo(hbotFixPosParamMgr.getDropLiquidPos()); + hbotBaseMoveExDriver.hbotMoveTo(hbotFixedPosParamMgr.getDropLiquidPos()); } /** diff --git a/src/main/java/a8k/service/app/devicectrl/ctrlservice/TubePreProcesCtrlService.java b/src/main/java/a8k/service/app/devicectrl/ctrlservice/TubePreProcesCtrlService.java index ac58740..d651d2a 100644 --- a/src/main/java/a8k/service/app/devicectrl/ctrlservice/TubePreProcesCtrlService.java +++ b/src/main/java/a8k/service/app/devicectrl/ctrlservice/TubePreProcesCtrlService.java @@ -242,11 +242,10 @@ public class TubePreProcesCtrlService { public void putbakTubeCapAndPutbakTubeToTubeHolder() throws AppException { //移动Y轴到方式管的位置 YSVMoveToShakePos(); -// 盖盖子 - stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModGripperZM,// - tubePreProcesPosParamMgr.getZMotorShakeTubePos() + tubePreProcesPosParamMgr.getGripperRedundancySpacingForTubeCap(), - actionOvertime); - + // 盖盖子 + stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModGripperZM,// + tubePreProcesPosParamMgr.getZMotorShakeTubePos() + tubePreProcesPosParamMgr.getGripperRedundancySpacingForTubeCap(), + actionOvertime); //释放试管 clampingMReleaseTube(); @@ -256,7 +255,7 @@ public class TubePreProcesCtrlService { YSVMoveToTakeTubePos(); //移动到放试管的位置 stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModGripperZM,// - tubePreProcesPosParamMgr.getZMotorTakeHTubePos() , + tubePreProcesPosParamMgr.getZMotorTakeHTubePos(), actionOvertime); //打开夹爪 gripperSVOpen(); diff --git a/src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java b/src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java new file mode 100644 index 0000000..6e52d0b --- /dev/null +++ b/src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java @@ -0,0 +1,52 @@ +package a8k.service.app.devicectrl.exdriver; + +import a8k.hardware.A8kCanBusService; +import a8k.service.app.devicectrl.driver.HbotDriver; +import a8k.service.app.devicectrl.driver.MiniServoDriver; +import a8k.service.app.devicectrl.driver.PipetteCtrlDriver; +import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver; +import a8k.service.app.devicectrl.driver.type.MiniServoMId; +import a8k.service.app.devicectrl.driver.type.StepMotorMId; +import a8k.service.app.devicectrl.param.TubePreProcesPosParamMgr; +import a8k.type.exception.AppException; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +@Component +public class MotorMoveZeroExDriver { + @Resource + A8kCanBusService canBus; + @Resource + HbotDriver hbotDriver; + @Resource + PipetteCtrlDriver pipetteCtrlDriver; + @Resource + StepMotorCtrlDriver stepMotorCtrlDriver; + @Resource + MiniServoDriver miniServoDriver; + @Resource + TubePreProcesPosParamMgr tubePreProcesPosParamMgr; + + + /** + * 入料模块归零 + * @throws AppException e + */ + public void tubeFeeddingModuleMoveToZero() throws AppException { + stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000); + } + + /** + * 预处理模块归零 + * @throws AppException e + */ + public void preProcessModuleMoveToZero() throws AppException { + stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModGripperZM, 5000); + miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV); + miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV); + stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, 5000); + stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, 5000); + // move to default pos + } + +} diff --git a/src/main/java/a8k/service/app/devicectrl/param/HbotFixPosParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/HbotFixedPosParamMgr.java similarity index 91% rename from src/main/java/a8k/service/app/devicectrl/param/HbotFixPosParamMgr.java rename to src/main/java/a8k/service/app/devicectrl/param/HbotFixedPosParamMgr.java index 7a95b48..d1a6da0 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/HbotFixPosParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/HbotFixedPosParamMgr.java @@ -20,9 +20,9 @@ import java.util.List; */ @Component @ExtApiTab(cfg = ExtApiTabConfig.Hbot2DCodeScanPos) -@ExtApiParamsTab(service = HbotFixPosParamMgr.class) -public class HbotFixPosParamMgr { - static final Logger logger = LoggerFactory.getLogger(HbotFixPosParamMgr.class); +@ExtApiParamsTab(service = HbotFixedPosParamMgr.class) +public class HbotFixedPosParamMgr { + static final Logger logger = LoggerFactory.getLogger(HbotFixedPosParamMgr.class); enum Pos { DropTipPos("丢TIP位置"), diff --git a/src/main/java/a8k/service/app/devicectrl/param/TubeFeedingModuleParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/TubeFeedingModuleParamMgr.java index 790a925..aa3854d 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/TubeFeedingModuleParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/TubeFeedingModuleParamMgr.java @@ -3,7 +3,8 @@ package a8k.service.app.devicectrl.param; import a8k.service.db.LowerDeviceParameterDBService; import a8k.service.db.type.Parameter; import a8k.service.db.utils.PosParameterReader; -import a8k.type.TubeFeedingModuleParam; +import a8k.type.TubeFeedingModuleSetting; +import a8k.type.TubeFeedingModulePos; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import org.slf4j.Logger; @@ -26,102 +27,105 @@ public class TubeFeedingModuleParamMgr { @PostConstruct void initialize() { posReader = lowerDeviceParameterDBService.getReader(this.getClass()); - for (TubeFeedingModuleParam tubeFeedingModuleParam : TubeFeedingModuleParam.values()) { - posReader.setParamChName(tubeFeedingModuleParam, tubeFeedingModuleParam.chName); + for (TubeFeedingModulePos pos : TubeFeedingModulePos.values()) { + posReader.setParamChName(pos, pos.chName); + } + for (TubeFeedingModuleSetting param : TubeFeedingModuleSetting.values()) { + posReader.setParamChName(param, param.chName); } } - // if (!nowParaVersion.equals(paraVersion)) { - // logger.info("init param"); - // posReader.setParam(POS.TubeHolderEnterXPos, -46); - // posReader.setParam(POS.TubeHolderExitXPos, 3975); - // posReader.setParam(POS.TubeHolderScanXPos, 2202); - // posReader.setParam(POS.Tube0ScanXPos, 505); - // posReader.setParam(POS.Tube0AltitJudgXPos, 505); - // posReader.setParam(POS.Tube0ExistJudgXPos, 300); - // posReader.setParam(POS.Tube0PreProcessXPos, 1225); - // posReader.setParam(POS.TubeScanServoTorque, 500); - // } + public List getSettings() { + return posReader.getParams(TubeFeedingModuleSetting.values()); + } + public List getPoss() { + return posReader.getParams(TubeFeedingModulePos.values()); + } - public List getParams() { - return posReader.getParams(); + public void setParam(TubeFeedingModulePos param, Object obj) { + posReader.setParam(param, obj); } - public void setParam(TubeFeedingModuleParam param, Object obj) { + public void setParam(TubeFeedingModuleSetting param, Object obj) { posReader.setParam(param, obj); } + /** + * 获取管子预处理位置 + * @param tubeIndex 管子序号 + * @return 坐标 + */ public Integer getTubePreProcessPos(Integer tubeIndex) { - Integer startPos = posReader.getPos(TubeFeedingModuleParam.Tube0PreProcessXPos, Integer.class); - Integer spacing = posReader.getPos(TubeFeedingModuleParam.TubeSpacing, Integer.class); - return startPos + spacing * tubeIndex; + Integer startPos = posReader.getPos(TubeFeedingModulePos.Tube0PreProcessPos, Integer.class); + Double spacing = posReader.getPos(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int)(startPos + spacing * tubeIndex); } + /** + * 获取试管扫描位置 + * @param tubeIndex 管子序号 + * @return 坐标 + */ public Integer getTubeScanPos(Integer tubeIndex) { - Integer startPos = posReader.getPos(TubeFeedingModuleParam.Tube0ScanXPos, Integer.class); - Integer spacing = posReader.getPos(TubeFeedingModuleParam.TubeSpacing, Integer.class); - return startPos + spacing * tubeIndex; + Integer startPos = posReader.getPos(TubeFeedingModulePos.Tube0ScanPos, Integer.class); + Double spacing = posReader.getPos(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int)(startPos + spacing * tubeIndex); } + /** + * 获取试管高度判断位置 + * @param tubeIndex 管子序号 + * @return 坐标 + */ public Integer getTubeAltitJudgPos(Integer tubeIndex) { - Integer startPos = posReader.getPos(TubeFeedingModuleParam.Tube0AltitJudgXPos, Integer.class); - Integer spacing = posReader.getPos(TubeFeedingModuleParam.TubeSpacing, Integer.class); - return startPos + spacing * tubeIndex; + Integer startPos = posReader.getPos(TubeFeedingModulePos.Tube0AltitJudgPos, Integer.class); + Double spacing = posReader.getPos(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int)(startPos + spacing * tubeIndex); } + /** + * 获取试管存在判断位置 + * @param tubeIndex 管子序号 + * @return 坐标 + */ public Integer getTubeExistJudgPos(Integer tubeIndex) { - Integer startPos = posReader.getPos(TubeFeedingModuleParam.Tube0ExistJudgXPos, Integer.class); - Integer spacing = posReader.getPos(TubeFeedingModuleParam.TubeSpacing, Integer.class); - return startPos + spacing * tubeIndex; + Integer startPos = posReader.getPos(TubeFeedingModulePos.Tube0ExistJudgPos, Integer.class); + Double spacing = posReader.getPos(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int)(startPos + spacing * tubeIndex); } + /** + * 获取试管架进入位置 + * @return X轴坐标 + */ public Integer getTubeHolderEnterXPos() { - return posReader.getPos(TubeFeedingModuleParam.TubeHolderEnterXPos, Integer.class); + return posReader.getPos(TubeFeedingModulePos.TubeHolderEnterXPos, Integer.class); } + /** + * 获取试管架出口位置 + * @return X轴坐标 + */ public Integer getTubeHolderExitXPos() { - return posReader.getPos(TubeFeedingModuleParam.TubeHolderExitXPos, Integer.class); + return posReader.getPos(TubeFeedingModulePos.TubeHolderExitXPos, Integer.class); } + /** + * 获取试管架扫描位置 + * @return X轴坐标 + */ public Integer getTubeHolderScanXPos() { - return posReader.getPos(TubeFeedingModuleParam.TubeHolderScanXPos, Integer.class); + return posReader.getPos(TubeFeedingModulePos.TubeHolderScanXPos, Integer.class); } + /** + * 获取试管架扫描位置 + * @return X轴坐标 + */ public Integer getTubeScanServoTorque() { - return posReader.getPos(TubeFeedingModuleParam.TubeScanServoTorque, Integer.class); + return posReader.getPos(TubeFeedingModuleSetting.TubeScanServoTorque, Integer.class); } - - // public void setTube0PreProcessXPos(Integer value) {posReader.setParam(TubeFeedingModuleParam.Tube0PreProcessXPos, value);} - // - // public void setTubeHolderEnterXPos(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.TubeHolderEnterXPos, value); - // } - // - // public void setTubeHolderExitXPos(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.TubeHolderExitXPos, value); - // } - // - // public void setTubeHolderScanXPos(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.TubeHolderScanXPos, value); - // } - // - // public void setTube0ScanXPos(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.Tube0ScanXPos, value); - // } - // - // public void setTube0AltitJudgXPos(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.Tube0AltitJudgXPos, value); - // } - // - // public void setTube0ExistJudgXPos(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.Tube0ExistJudgXPos, value); - // } - // - // public void setTubeScanServoTorque(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.TubeScanServoTorque, value); - // } - } diff --git a/src/main/java/a8k/service/app/devicectrl/param/TubePreProcesPosParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/TubePreProcesPosParamMgr.java index 897f2eb..534e9ae 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/TubePreProcesPosParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/TubePreProcesPosParamMgr.java @@ -24,7 +24,7 @@ public class TubePreProcesPosParamMgr { ShakeClampMotorClampPos("试管夹紧位"),// ShakeClampMotorReleasePos("摇匀臂"),// - GripperRedundancySpacingForTubeCap("夹爪试管帽冗余间距"),// + GripperRedundancySpacingForTubeCap("夹爪试管帽垂直冗余"),// ; public final String chName; diff --git a/src/main/java/a8k/service/db/utils/PosParameterReader.java b/src/main/java/a8k/service/db/utils/PosParameterReader.java index e0db981..39f0c46 100644 --- a/src/main/java/a8k/service/db/utils/PosParameterReader.java +++ b/src/main/java/a8k/service/db/utils/PosParameterReader.java @@ -3,6 +3,7 @@ package a8k.service.db.utils; import a8k.service.db.LowerDeviceParameterDBService; import a8k.service.db.type.Parameter; +import java.util.ArrayList; import java.util.List; public class PosParameterReader { @@ -48,9 +49,16 @@ public class PosParameterReader { } - - public List getParams() { return lowerDeviceParameterDBService.getParams(service.getSimpleName()); } + + public List getParams(Enum[] etable) { + List parameters = new ArrayList<>(); + for (Enum e : etable) { + Parameter parameter = lowerDeviceParameterDBService.getParam(service.getSimpleName(), e.name()); + parameters.add(parameter); + } + return parameters; + } } diff --git a/src/main/java/a8k/type/TubeFeedingModuleParam.java b/src/main/java/a8k/type/TubeFeedingModuleParam.java deleted file mode 100644 index 72a0747..0000000 --- a/src/main/java/a8k/type/TubeFeedingModuleParam.java +++ /dev/null @@ -1,19 +0,0 @@ -package a8k.type; - -public enum TubeFeedingModuleParam { - TubeHolderEnterXPos("入料位置"), // - TubeHolderExitXPos("出料位置"), // - TubeHolderScanXPos("试管架扫描位置"), // - Tube0ScanXPos("01号试管扫描位置"), // - Tube0AltitJudgXPos("01试管高度判断位置"), // - Tube0ExistJudgXPos("01试管存在判断位置"), // - Tube0PreProcessXPos("01试管预处理位置"), // - TubeScanServoTorque("试管扫描伺服力矩"), // - TubeSpacing("试管间距"), // - ; - public final String chName; - - TubeFeedingModuleParam(String chName) { - this.chName = chName; - } -} diff --git a/src/main/java/a8k/type/TubeFeedingModulePos.java b/src/main/java/a8k/type/TubeFeedingModulePos.java new file mode 100644 index 0000000..a958c01 --- /dev/null +++ b/src/main/java/a8k/type/TubeFeedingModulePos.java @@ -0,0 +1,17 @@ +package a8k.type; + +public enum TubeFeedingModulePos { + TubeHolderEnterXPos("入料位置"), // + TubeHolderExitXPos("出料位置"), // + TubeHolderScanXPos("试管架扫描位置"), // + Tube0ScanPos("01号试管扫描位置"), // + Tube0AltitJudgPos("01试管高度判断位置"), // + Tube0ExistJudgPos("01试管存在判断位置"), // + Tube0PreProcessPos("01试管预处理位置"), // + ; + public final String chName; + + TubeFeedingModulePos(String chName) { + this.chName = chName; + } +} diff --git a/src/main/java/a8k/type/TubeFeedingModuleSetting.java b/src/main/java/a8k/type/TubeFeedingModuleSetting.java new file mode 100644 index 0000000..baf7de2 --- /dev/null +++ b/src/main/java/a8k/type/TubeFeedingModuleSetting.java @@ -0,0 +1,12 @@ +package a8k.type; + +public enum TubeFeedingModuleSetting { + TubeScanServoTorque("试管扫描伺服力矩"), // + TubeSpacing("试管间距"), // + ; + public final String chName; + + TubeFeedingModuleSetting(String chName) { + this.chName = chName; + } +}