From 391b273403539d4112aefb7a18534f9cbee21847 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Mon, 11 Nov 2024 15:14:38 +0800 Subject: [PATCH] update --- .../api/v1/app/assistant/ApiRetTestControler.java | 8 +++ .../devicectrl/ctrlservice/HbotCtrlService.java | 11 +++- .../calibration/HbotLittleBSPosCalibration.java | 39 +++++++++---- .../HbotProbeSubstancePosCalibration.java | 47 +++++++++++---- .../ext_param_mgr/HbotConsumableParamMgr.java | 9 ++- .../param/param_mgr/Hbot2DCodeScanParamMgr.java | 2 +- .../param/param_mgr/HbotFixedPosParamMgr.java | 10 ++-- .../param/param_mgr/HbotLargeBottleBSPosMgr.java | 2 +- .../param/param_mgr/HbotLittleBSPosMgr.java | 9 ++- .../param/param_mgr/HbotProbeSubstancePosMgr.java | 29 ++++++---- .../param/param_mgr/HbotSamplePosParamMgr.java | 2 +- .../devicectrl/param/param_mgr/HbotTipPosMgr.java | 13 +++-- .../param/param_mgr/OptModuleExtParamsMgr.java | 2 +- .../param/param_mgr/OptModuleParamsMgr.java | 2 +- .../param/param_mgr/PipetteGunLLDParamMgr.java | 4 +- .../param/param_mgr/PipetteGunLLFParamMgr.java | 2 +- .../param/param_mgr/PlatesBoxPosParamMgr.java | 12 ++-- .../param/param_mgr/TemperatureCtrlParamMgr.java | 2 +- .../param/param_mgr/TubeFeedingModuleParamMgr.java | 21 +++---- .../param/param_mgr/TubePreProcesPosParamMgr.java | 8 +-- .../param/param_mgr/TurntablePosParamMgr.java | 20 ++++--- .../devicectrl/param/param_mgr/base/ParamMgr.java | 4 +- .../devicectrl/param/type/Hbot2DCodeScanPos.java | 42 +++++++------- .../param/type/HbotLargeBottleBSPos.java | 16 ++++-- .../app/devicectrl/param/type/HbotLittleBSPos.java | 28 +++++---- .../param/type/HbotProbeSubstancePos.java | 30 ++++++---- .../app/devicectrl/param/type/HbotSamplePos.java | 41 +++++++------- .../app/devicectrl/param/type/HbotTipPosParam.java | 27 +++++---- .../devicectrl/param/type/OptModuleExtParam.java | 20 ++++--- .../app/devicectrl/param/type/OptModuleParam.java | 10 ++-- .../param/type/PipetteGunLLDThresholdParam.java | 10 ++-- .../param/type/PipetteGunLLDTypeParam.java | 8 ++- .../devicectrl/param/type/PipetteGunLLFParam.java | 20 ++++--- .../param/type/TemperatureCtrlParam.java | 8 ++- .../param/type/TubePreProcessZAxisPos.java | 11 ++-- .../app/devicectrl/script/DeviceCtrlScripter.java | 2 +- .../a8k/service/dao/LowerDeviceParameterDao.java | 63 +++++++-------------- .../a8k/service/dao/utils/PosParameterReader.java | 4 -- src/main/java/a8k/type/TubeFeedingModulePos.java | 18 +++--- .../java/a8k/type/TubeFeedingModuleSetting.java | 8 ++- .../java/a8k/type/TubePreProcessGripperPos.java | 10 ++-- .../java/a8k/type/TubePreProcessTubeClamp.java | 8 ++- src/main/java/a8k/type/TubePreProcessYPos.java | 8 ++- src/main/java/a8k/unittest/TestBeforeRun.java | 4 +- .../java/a8k/utils/ProjProcessContextUtils.java | 2 +- src/main/resources/app.db | Bin 225280 -> 225280 bytes 46 files changed, 385 insertions(+), 271 deletions(-) diff --git a/src/main/java/a8k/controler/api/v1/app/assistant/ApiRetTestControler.java b/src/main/java/a8k/controler/api/v1/app/assistant/ApiRetTestControler.java index 8225ecd..ba12811 100644 --- a/src/main/java/a8k/controler/api/v1/app/assistant/ApiRetTestControler.java +++ b/src/main/java/a8k/controler/api/v1/app/assistant/ApiRetTestControler.java @@ -54,9 +54,17 @@ public class ApiRetTestControler { @Operation(description = "获取试管错误,此错误发生在试管处理过程中(扫描,脱帽,盖帽,摇匀),此错误,需要提示用户,是第几个试管发生了错误") @PostMapping("getTubeError") public ApiV1Ret getTubeError() { + try { + throw new AppException(A8kEcode.APPE_A8K_PROJ_INFO_IS_ERROR); + } catch (AppException e) { + log.error("",e); + } + return ApiV1Ret.fail(// new AETubeError(A8kEcode.APPE_A8K_PROJ_UNSUPPORTED, 6) ); + + } } 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 ffbcd44..fb6e973 100644 --- a/src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java +++ b/src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java @@ -120,7 +120,7 @@ public class HbotCtrlService { hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getLittleBufferPiercePos(group, off)); } - public void moveToLittleBufferSamplePosEnd(ConsumableGroup group, Integer off) throws AppException { + public void moveToLittleBufferSamplePos(ConsumableGroup group, Integer off) throws AppException { hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getLittleBufferSamplePosEnd(group, off)); } @@ -128,10 +128,15 @@ public class HbotCtrlService { // hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getProbeSubstanceSamplePos(group, off)); // } - public void moveToProbeSubstanceSamplePosEnd(ConsumableGroup group, Integer off) throws AppException { - hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getProbeSubstanceSamplePosEnd(group, off)); + public void moveToProbeSubstanceSamplePos(ConsumableGroup group, Integer off) throws AppException { + hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getProbeSubstanceSamplePos(group, off)); } + public void moveToProbeSubstancePiercePos(ConsumableGroup group, Integer off) throws AppException { + hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getProbeSubstancePiercePos(group, off)); + } + + public void moveToLargeBufferPos(ConsumableGroup group) throws AppException { Pos3d toPos = hbotConsumableParamMgr.getLargeBufferSamplePos(group); hbotBaseMoveExDriver.hbotMoveTo(toPos); diff --git a/src/main/java/a8k/service/app/devicectrl/param/calibration/HbotLittleBSPosCalibration.java b/src/main/java/a8k/service/app/devicectrl/param/calibration/HbotLittleBSPosCalibration.java index 1361045..09f8ad9 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/calibration/HbotLittleBSPosCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/param/calibration/HbotLittleBSPosCalibration.java @@ -6,7 +6,6 @@ import a8k.extapi_controler.pagecontrol.ExtApiTabConfig; import a8k.extapi_controler.utils.ExtApiFn; import a8k.extapi_controler.utils.ExtApiTab; import a8k.service.app.devicectrl.exdriver.HbotBaseMoveExDriver; -import a8k.service.app.devicectrl.param.algo.HbotLittleBSCalibrationAlgo; import a8k.service.app.devicectrl.param.param_mgr.HbotLittleBSPosMgr; import a8k.service.app.devicectrl.param.type.HbotLittleBSPos; import a8k.service.app.devicectrl.driver.HbotDriver; @@ -14,7 +13,6 @@ import a8k.service.app.devicectrl.driver.PipetteCtrlDriver; import a8k.service.app.devicectrl.ctrlservice.HbotCtrlService; import a8k.type.*; import a8k.type.cfg.Pos2d; -import a8k.type.cfg.Pos3d; import a8k.type.exception.AppException; import a8k.utils.ZJsonHelper; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -143,16 +141,20 @@ public class HbotLittleBSPosCalibration { disableModule(); } - @ExtApiFn(name = "校准.小瓶穿孔Z轴位置", group = "标定Z轴", order = 101) + @ExtApiFn(name = "标定.小瓶穿孔Z轴位置", group = "标定Z轴", order = 101) public void calibrationPierceZPos() throws AppException {calibrationZPos(HbotLittleBSPos.LittleBSPierceZPos, 0);} - // @ExtApiFn(name = "校准.小瓶取样Z轴位置", group = "标定Z轴", order = 102) - // public void calibrationSampleZPos() throws AppException {calibrationZPos(HbotLittleBSPos.LittleBSSampleZPos, 0);} + @ExtApiFn(name = "标定.小瓶缓冲液取样Z轴位置", group = "标定Z轴", order = 104) + public void calibrationLittleBSSampleZPos() throws AppException { + calibrationZPos(HbotLittleBSPos.LittleBSSampleZPos, 0); + } - @ExtApiFn(name = "校准.小瓶缓冲液取样结束Z轴位置", group = "标定Z轴", order = 104) - public void calibrationSampleEndZPos() throws AppException { - //结束位置比设定位置高1mm的余量 - calibrationZPos(HbotLittleBSPos.LittleBSSampleEndZPos, -25); + // + // 设置 + // + @ExtApiFn(name = "设置.小瓶缓冲液刺破附加距离", group = "标定Z轴", order = 201) + public void setLittleBSPierceXYAppendDistance(Double distance) throws AppException { + hbotLittleBSPosMgr.setParam(HbotLittleBSPos.LittleBSPierceXYAppendDistance, distance); } // @@ -165,7 +167,24 @@ public class HbotLittleBSPosCalibration { pipetteCtrlDriver.zMotorMoveZeroBlock(); for (int i = 0; i < AppConstant.CONSUMABLE_NUM; i++) { - hbotCtrlService.moveToLittleBufferSamplePosEnd(group, i); + hbotCtrlService.moveToLittleBufferSamplePos(group, i); + pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock(); + if (checkStopFlag()) + break; + } + pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock(); + disableModule(); + + } + + @ExtApiFn(name = "校验小瓶缓冲液刺破坐标", group = "校验", order = 302) + public void testMoveToLittleBufferPircePosPos(ConsumableGroup group) throws AppException { + resetStopFlag(); + enableModule(); + pipetteCtrlDriver.zMotorMoveZeroBlock(); + + for (int i = 0; i < AppConstant.CONSUMABLE_NUM; i++) { + hbotCtrlService.moveToLittleBufferPiercePos(group, i); pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock(); if (checkStopFlag()) break; diff --git a/src/main/java/a8k/service/app/devicectrl/param/calibration/HbotProbeSubstancePosCalibration.java b/src/main/java/a8k/service/app/devicectrl/param/calibration/HbotProbeSubstancePosCalibration.java index 6a8ddb7..00ee908 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/calibration/HbotProbeSubstancePosCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/param/calibration/HbotProbeSubstancePosCalibration.java @@ -6,18 +6,15 @@ import a8k.extapi_controler.pagecontrol.ExtApiTabConfig; import a8k.extapi_controler.utils.ExtApiFn; import a8k.extapi_controler.utils.ExtApiTab; import a8k.service.app.devicectrl.exdriver.HbotBaseMoveExDriver; -import a8k.service.app.devicectrl.param.algo.HbotLittleBSCalibrationAlgo; import a8k.service.app.devicectrl.param.param_mgr.HbotProbeSubstancePosMgr; import a8k.service.app.devicectrl.param.type.HbotProbeSubstancePos; import a8k.service.app.devicectrl.ctrlservice.HbotCtrlService; import a8k.service.app.devicectrl.driver.HbotDriver; import a8k.service.app.devicectrl.driver.PipetteCtrlDriver; +import a8k.service.app.devicectrl.param.type.HbotSamplePos; import a8k.type.ConsumableGroup; -import a8k.type.LittleBottleConsumablePosInfo; import a8k.type.LittleBottleConsumableRefPoint; -import a8k.type.LittleBottleConsumableType; import a8k.type.cfg.Pos2d; -import a8k.type.cfg.Pos3d; import a8k.type.exception.AppException; import a8k.utils.ZJsonHelper; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -147,22 +144,34 @@ public class HbotProbeSubstancePosCalibration { disableModule(); } -// @ExtApiFn(name = "校准.小瓶取样Z轴位置", group = "标定Z轴", order = 102) -// public void setSampleZPos() throws AppException {setZPos(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, 0);} + // @ExtApiFn(name = "校准.小瓶取样Z轴位置", group = "标定Z轴", order = 102) + // public void setSampleZPos() throws AppException {setZPos(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, 0);} - @ExtApiFn(name = "校准.小瓶缓冲液取样结束Z轴位置", group = "标定Z轴", order = 104) - public void setSampleEndZPos() throws AppException {setZPos(HbotProbeSubstancePos.ProbeSubstanceSampleEndZPos, -25/*2mm*/);} + @ExtApiFn(name = "校准.小瓶缓冲液取样Z轴位置", group = "标定Z轴", order = 104) + public void setSampleZPos() throws AppException {setZPos(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, 0);} + + @ExtApiFn(name = "校准.小瓶缓冲液刺破Z轴位置", group = "标定Z轴", order = 105) + public void setPiercePos() throws AppException {setZPos(HbotProbeSubstancePos.ProbeSubstancePierceZPos, 0);} + + + // + // 设置 + // + @ExtApiFn(name = "设置.小瓶缓冲液刺破附加距离", group = "标定Z轴", order = 201) + public void setPierceXYAppendDistance(Double distance) throws AppException { + posMgr.setParam(HbotProbeSubstancePos.ProbeSubstancePierceXYAppendDistance, distance); + } // // 校验 // - @ExtApiFn(name = "校验", group = "校验", order = 301) - public void testMoveToLittleBufferPos(ConsumableGroup group) throws AppException { + @ExtApiFn(name = "移动到取样位置", group = "校验", order = 301) + public void testMoveToSamplePos(ConsumableGroup group) throws AppException { resetStopFlag(); enableModule(); pipetteCtrlDriver.zMotorMoveZeroBlock(); for (int i = 0; i < AppConstant.CONSUMABLE_NUM; i++) { - hbotCtrlService.moveToProbeSubstanceSamplePosEnd(group, i); + hbotCtrlService.moveToProbeSubstanceSamplePos(group, i); pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock(); if (checkStopFlag()) break; @@ -171,6 +180,22 @@ public class HbotProbeSubstancePosCalibration { disableModule(); } + @ExtApiFn(name = "移动到刺破位置", group = "校验", order = 302) + public void testMoveToPiercePos(ConsumableGroup group) throws AppException { + resetStopFlag(); + enableModule(); + pipetteCtrlDriver.zMotorMoveZeroBlock(); + for (int i = 0; i < AppConstant.CONSUMABLE_NUM; i++) { + hbotCtrlService.moveToProbeSubstancePiercePos(group, i); + pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock(); + if (checkStopFlag()) + break; + } + pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock(); + disableModule(); + } + + @ExtApiFn(name = "停止校验", group = "校验", order = 304) public void stopTest() throws AppException { setStopFlag(); diff --git a/src/main/java/a8k/service/app/devicectrl/param/ext_param_mgr/HbotConsumableParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/ext_param_mgr/HbotConsumableParamMgr.java index 08a046e..45403e0 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/ext_param_mgr/HbotConsumableParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/ext_param_mgr/HbotConsumableParamMgr.java @@ -42,16 +42,19 @@ public class HbotConsumableParamMgr { } + public Pos3d getProbeSubstanceSamplePos(ConsumableGroup group, Integer off) { + return hbotProbeSubstancePosMgr.getSamplePos(group, off); + } - public Pos3d getProbeSubstanceSamplePosEnd(ConsumableGroup group, Integer off) { - return hbotProbeSubstancePosMgr.getSampleEndPos(group, off); + public Pos3d getProbeSubstancePiercePos(ConsumableGroup group, Integer off) { + return hbotProbeSubstancePosMgr.getPiercePos(group, off); } public Pos3d getLargeBufferSamplePos(ConsumableGroup group) { return hbotLargeBottleBSPosMgr.getSamplePos(group); } - public Pos3d getLargeBufferSamplePosEnd(ConsumableGroup group){ + public Pos3d getLargeBufferSamplePosEnd(ConsumableGroup group) { return hbotLargeBottleBSPosMgr.getSamplePosEnd(group); } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/Hbot2DCodeScanParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/Hbot2DCodeScanParamMgr.java index 1cb1ff3..cbffd88 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/Hbot2DCodeScanParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/Hbot2DCodeScanParamMgr.java @@ -19,7 +19,7 @@ public class Hbot2DCodeScanParamMgr extends ParamMgr { @PostConstruct void initialize() { for (Hbot2DCodeScanPos pos : Hbot2DCodeScanPos.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName,pos.type); } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotFixedPosParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotFixedPosParamMgr.java index 9757288..97db4c1 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotFixedPosParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotFixedPosParamMgr.java @@ -11,23 +11,25 @@ import org.springframework.stereotype.Component; * HBOT二维码扫描坐标参数 */ @Component -public class HbotFixedPosParamMgr extends ParamMgr { +public class HbotFixedPosParamMgr extends ParamMgr { static final Logger logger = LoggerFactory.getLogger(HbotFixedPosParamMgr.class); public enum Pos { - DropLiquidPos("滴液位置"), + DropLiquidPos("滴液位置", Pos3d.class), ; public final String chName; + public final Class type; - Pos(String chName) { + Pos(String chName, Class type) { this.chName = chName; + this.type = type; } } @PostConstruct void initialize() { for (Pos pos : Pos.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName,pos.type); } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLargeBottleBSPosMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLargeBottleBSPosMgr.java index 1363d02..f54036a 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLargeBottleBSPosMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLargeBottleBSPosMgr.java @@ -21,7 +21,7 @@ public class HbotLargeBottleBSPosMgr extends ParamMgr { @PostConstruct void initialize() { for (HbotLargeBottleBSPos param : HbotLargeBottleBSPos.values()) { - setParamChName(param, param.chName); + initParam(param, param.chName, param.type); } } public void setParam(HbotLargeBottleBSPos param, Object val) { diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLittleBSPosMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLittleBSPosMgr.java index 37e3125..9c741c1 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLittleBSPosMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLittleBSPosMgr.java @@ -21,7 +21,7 @@ public class HbotLittleBSPosMgr extends ParamMgr { @PostConstruct void initialize() { for (HbotLittleBSPos param : HbotLittleBSPos.values()) { - setParamChName(param, param.chName); + initParam(param, param.chName, param.type); } } @@ -53,14 +53,17 @@ public class HbotLittleBSPosMgr extends ParamMgr { } public Pos3d getPiercePos(ConsumableGroup group, Integer off) { - Pos3d pos = getConsumablePos(group, off); + Pos3d pos = getConsumablePos(group, off); + Double appDistance = getParam(HbotLittleBSPos.LittleBSPierceXYAppendDistance, Double.class); + pos.x += appDistance.intValue(); + pos.y += appDistance.intValue(); pos.z = getParam(HbotLittleBSPos.LittleBSPierceZPos, Double.class).intValue(); return pos; } public Pos3d getSampleEndPos(ConsumableGroup group, Integer off) { Pos3d pos = getConsumablePos(group, off); - pos.z = getParam(HbotLittleBSPos.LittleBSSampleEndZPos, Double.class).intValue(); + pos.z = getParam(HbotLittleBSPos.LittleBSSampleZPos, Double.class).intValue(); return pos; } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotProbeSubstancePosMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotProbeSubstancePosMgr.java index 7334527..806611e 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotProbeSubstancePosMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotProbeSubstancePosMgr.java @@ -1,10 +1,8 @@ package a8k.service.app.devicectrl.param.param_mgr; import a8k.service.app.devicectrl.param.param_mgr.base.ParamMgr; -import a8k.service.app.devicectrl.param.type.HbotLittleBSPos; import a8k.service.app.devicectrl.param.type.HbotProbeSubstancePos; import a8k.type.ConsumableGroup; -import a8k.type.LittleBottleConsumablePosInfo; import a8k.type.cfg.Pos2d; import a8k.type.cfg.Pos3d; import jakarta.annotation.PostConstruct; @@ -23,7 +21,7 @@ public class HbotProbeSubstancePosMgr extends ParamMgr { @PostConstruct void initialize() { for (HbotProbeSubstancePos param : HbotProbeSubstancePos.values()) { - setParamChName(param, param.chName); + initParam(param, param.chName, param.type); } } @@ -54,16 +52,25 @@ public class HbotProbeSubstancePosMgr extends ParamMgr { return new Pos3d((int) x, (int) y, 0); } -// public Pos3d getSamplePos(ConsumableGroup group, Integer off) { -// Pos3d pos = getXYPos(group, off); -// pos.z = getParam(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, Double.class).intValue(); -// return pos; -// } + // public Pos3d getSamplePos(ConsumableGroup group, Integer off) { + // Pos3d pos = getXYPos(group, off); + // pos.z = getParam(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, Double.class).intValue(); + // return pos; + // } - public Pos3d getSampleEndPos(ConsumableGroup group, Integer off) { - Pos3d pos = getXYPos(group, off); - pos.z = getParam(HbotProbeSubstancePos.ProbeSubstanceSampleEndZPos, Double.class).intValue(); + public Pos3d getSamplePos(ConsumableGroup group, Integer off) { + Pos3d pos = getXYPos(group, off); + pos.z = getParam(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, Integer.class); return pos; } + public Pos3d getPiercePos(ConsumableGroup group, Integer off) { + Pos3d pos = getXYPos(group, off); + pos.z = getParam(HbotProbeSubstancePos.ProbeSubstancePierceZPos, Integer.class); + pos.x += getParam(HbotProbeSubstancePos.ProbeSubstancePierceXYAppendDistance, Double.class).intValue(); + pos.y += getParam(HbotProbeSubstancePos.ProbeSubstancePierceXYAppendDistance, Double.class).intValue(); + return pos; + } + + } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotSamplePosParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotSamplePosParamMgr.java index faf56d0..a7ea8e5 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotSamplePosParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotSamplePosParamMgr.java @@ -20,7 +20,7 @@ public class HbotSamplePosParamMgr extends ParamMgr { @PostConstruct void initialize() { for (HbotSamplePos pos : HbotSamplePos.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName,pos.type); } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotTipPosMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotTipPosMgr.java index b6413bd..a30af50 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotTipPosMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotTipPosMgr.java @@ -22,7 +22,7 @@ public class HbotTipPosMgr extends ParamMgr { @PostConstruct void initialize() { for (HbotTipPosParam param : HbotTipPosParam.values()) { - setParamChName(param, param.chName); + initParam(param, param.chName, param.type); } } @@ -35,9 +35,12 @@ public class HbotTipPosMgr extends ParamMgr { HbotTipPosParam tip000Pos = null; HbotTipPosParam tipDxPos = null; HbotTipPosParam tipDyPos = null; - if(tip000 == null) tip000 = new Pos3d(0, 0, 0); - if(dx == null) dx = 0.0; - if(dy == null) dy = 0.0; + if (tip000 == null) + tip000 = new Pos3d(0, 0, 0); + if (dx == null) + dx = 0.0; + if (dy == null) + dy = 0.0; if (tipGroup == TipGroup.GROUP0) { tip000Pos = HbotTipPosParam.TipGroup0_000Pos; @@ -91,7 +94,7 @@ public class HbotTipPosMgr extends ParamMgr { cfg.tip000 = tip000; cfg.spaceingX = dx; cfg.spaceingY = dy; - cfg.tipGroup = tipGroup; + cfg.tipGroup = tipGroup; return cfg; } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java index 30025cd..208cb8c 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java @@ -21,7 +21,7 @@ public class OptModuleExtParamsMgr extends ParamMgr { @PostConstruct void initialize() { for (OptModuleExtParam pos : OptModuleExtParam.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName,pos.type); } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleParamsMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleParamsMgr.java index a07749d..18e37d8 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleParamsMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleParamsMgr.java @@ -19,7 +19,7 @@ public class OptModuleParamsMgr extends ParamMgr { @PostConstruct void initialize() { for (OptModuleParam pos : OptModuleParam.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName,pos.type); } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/PipetteGunLLDParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/PipetteGunLLDParamMgr.java index a912493..44f82d0 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/PipetteGunLLDParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/PipetteGunLLDParamMgr.java @@ -18,10 +18,10 @@ public class PipetteGunLLDParamMgr extends ParamMgr { @PostConstruct void initialize() { for (PipetteGunLLDThresholdParam param : PipetteGunLLDThresholdParam.values()) { - setParamChName(param, param.chName); + initParam(param, param.chName, param.type); } for (PipetteGunLLDTypeParam param : PipetteGunLLDTypeParam.values()) { - setParamChName(param, param.chName); + initParam(param, param.chName, param.type); } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/PipetteGunLLFParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/PipetteGunLLFParamMgr.java index 25fff39..1ca8c2c 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/PipetteGunLLFParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/PipetteGunLLFParamMgr.java @@ -21,7 +21,7 @@ public class PipetteGunLLFParamMgr extends ParamMgr { @PostConstruct void initialize() { for (PipetteGunLLFParam param : PipetteGunLLFParam.values()) { - setParamChName(param, param.chName); + initParam(param, param.chName,param.type); } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/PlatesBoxPosParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/PlatesBoxPosParamMgr.java index 2234398..e2327ba 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/PlatesBoxPosParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/PlatesBoxPosParamMgr.java @@ -13,14 +13,16 @@ public class PlatesBoxPosParamMgr extends ParamMgr { static final Logger logger = LoggerFactory.getLogger(PlatesBoxPosParamMgr.class); enum POS { - Ch0YPos("通道0Y轴位置"), - Ch5YPos("通道5Y轴位置"), - PushEndXPos("推杆到位坐标"), + Ch0YPos("通道0Y轴位置",Integer.class), + Ch5YPos("通道5Y轴位置",Integer.class), + PushEndXPos("推杆到位坐标",Integer.class), ; public final String chName; + public final Class type; - POS(String chName) { + POS(String chName,Class type) { this.chName = chName; + this.type = type; } } @@ -28,7 +30,7 @@ public class PlatesBoxPosParamMgr extends ParamMgr { @PostConstruct void initialize() { for (POS pos : POS.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName,pos.type); } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TemperatureCtrlParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TemperatureCtrlParamMgr.java index c75f8d8..5277a63 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TemperatureCtrlParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TemperatureCtrlParamMgr.java @@ -17,7 +17,7 @@ public class TemperatureCtrlParamMgr extends ParamMgr { @PostConstruct void initialize() { for (TemperatureCtrlParam pos : TemperatureCtrlParam.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName, pos.type); } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TubeFeedingModuleParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TubeFeedingModuleParamMgr.java index 1fd9b29..35aa9d6 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TubeFeedingModuleParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TubeFeedingModuleParamMgr.java @@ -12,13 +12,14 @@ import org.springframework.stereotype.Component; @Component public class TubeFeedingModuleParamMgr extends ParamMgr { static final Logger logger = LoggerFactory.getLogger(TubeFeedingModuleParamMgr.class); + @PostConstruct void initialize() { for (TubeFeedingModulePos pos : TubeFeedingModulePos.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName, pos.type); } for (TubeFeedingModuleSetting param : TubeFeedingModuleSetting.values()) { - setParamChName(param, param.chName); + initParam(param, param.chName, param.type); } } @@ -29,8 +30,8 @@ public class TubeFeedingModuleParamMgr extends ParamMgr { */ public Integer getTubePreProcessPos(Integer tubeIndex) { Integer startPos = getParam(TubeFeedingModulePos.Tube0PreProcessPos, Integer.class); - Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); - return (int)(startPos + spacing * tubeIndex); + Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int) (startPos + spacing * tubeIndex); } /** @@ -40,8 +41,8 @@ public class TubeFeedingModuleParamMgr extends ParamMgr { */ public Integer getTubeScanPos(Integer tubeIndex) { Integer startPos = getParam(TubeFeedingModulePos.Tube0ScanPos, Integer.class); - Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); - return (int)(startPos + spacing * tubeIndex); + Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int) (startPos + spacing * tubeIndex); } /** @@ -51,8 +52,8 @@ public class TubeFeedingModuleParamMgr extends ParamMgr { */ public Integer getTubeAltitJudgPos(Integer tubeIndex) { Integer startPos = getParam(TubeFeedingModulePos.Tube0AltitJudgPos, Integer.class); - Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); - return (int)(startPos + spacing * tubeIndex); + Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int) (startPos + spacing * tubeIndex); } /** @@ -62,8 +63,8 @@ public class TubeFeedingModuleParamMgr extends ParamMgr { */ public Integer getTubeExistJudgPos(Integer tubeIndex) { Integer startPos = getParam(TubeFeedingModulePos.Tube0ExistJudgPos, Integer.class); - Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); - return (int)(startPos + spacing * tubeIndex); + Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int) (startPos + spacing * tubeIndex); } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TubePreProcesPosParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TubePreProcesPosParamMgr.java index dfed57d..425ca3b 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TubePreProcesPosParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TubePreProcesPosParamMgr.java @@ -17,16 +17,16 @@ public class TubePreProcesPosParamMgr extends ParamMgr { @PostConstruct void initialize() { for (var pos : TubePreProcessGripperPos.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName,pos.type); } for (var pos : TubePreProcessTubeClamp.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName,pos.type); } for (var pos : TubePreProcessYPos.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName,pos.type); } for (var pos : TubePreProcessZAxisPos.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName,pos.type); } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TurntablePosParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TurntablePosParamMgr.java index 37b1267..8e12c99 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TurntablePosParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/TurntablePosParamMgr.java @@ -12,24 +12,29 @@ import org.springframework.stereotype.Component; @Component public class TurntablePosParamMgr extends ParamMgr { static final Logger logger = LoggerFactory.getLogger(TurntablePosParamMgr.class); + /* * 转盘相关位置 */ enum POS { - PushPos0("入板位置"), - PullPos0("出板位置"), - DropLiquidPos0("滴液位置"), - PosSpacing("位置间隔"), + PushPos0("入板位置", Integer.class), + PullPos0("出板位置", Integer.class), + DropLiquidPos0("滴液位置", Integer.class), + PosSpacing("位置间隔", Integer.class), ; - final String chName; - POS(String chName) { + final public String chName; + final public Class type; + + POS(String chName, Class type) { this.chName = chName; + this.type = type; } } + @PostConstruct void initialize() { for (POS pos : POS.values()) { - setParamChName(pos, pos.chName); + initParam(pos, pos.chName, pos.type); } } @@ -40,6 +45,7 @@ public class TurntablePosParamMgr extends ParamMgr { setParam(POS.DropLiquidPos0, 1650 + 8950); setParam(POS.PosSpacing, 1800); } + public Integer getPushPos0() { return getParam(POS.PushPos0, Integer.class); } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/base/ParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/base/ParamMgr.java index 0f12e09..b39e216 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/base/ParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/base/ParamMgr.java @@ -37,8 +37,8 @@ public class ParamMgr { return db.getParam(this.serviceName, key.name(), tClass); } - public void setParamChName(Enum key, String chName) { - db.setParamChName(serviceName, key.name(), chName); + public void initParam(Enum key, String chName, Class type) { + db.initParam(serviceName, key.name(), chName, type); } diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/Hbot2DCodeScanPos.java b/src/main/java/a8k/service/app/devicectrl/param/type/Hbot2DCodeScanPos.java index 12df85b..15e6216 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/Hbot2DCodeScanPos.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/Hbot2DCodeScanPos.java @@ -1,30 +1,34 @@ package a8k.service.app.devicectrl.param.type; +import a8k.type.cfg.Pos2d; + public enum Hbot2DCodeScanPos { - PBScanPos0("板夹仓扫码位置0"), - PBScanPos1("板夹仓扫码位置1"), - PBScanPos2("板夹仓扫码位置2"), - PBScanPos3("板夹仓扫码位置3"), - PBScanPos4("板夹仓扫码位置4"), - PBScanPos5("板夹仓扫码位置5"), + PBScanPos0("板夹仓扫码位置0", Pos2d.class), + PBScanPos1("板夹仓扫码位置1", Pos2d.class), + PBScanPos2("板夹仓扫码位置2", Pos2d.class), + PBScanPos3("板夹仓扫码位置3", Pos2d.class), + PBScanPos4("板夹仓扫码位置4", Pos2d.class), + PBScanPos5("板夹仓扫码位置5", Pos2d.class), - LittBS0("小缓冲液扫码位置0"), - LittBS1("小缓冲液扫码位置1"), - LittBS2("小缓冲液扫码位置2"), - LittBS3("小缓冲液扫码位置3"), - LittBS4("小缓冲液扫码位置4"), - LittBS5("小缓冲液扫码位置5"), + LittBS0("小缓冲液扫码位置0", Pos2d.class), + LittBS1("小缓冲液扫码位置1", Pos2d.class), + LittBS2("小缓冲液扫码位置2", Pos2d.class), + LittBS3("小缓冲液扫码位置3", Pos2d.class), + LittBS4("小缓冲液扫码位置4", Pos2d.class), + LittBS5("小缓冲液扫码位置5", Pos2d.class), - LarBS0("大缓冲液扫码位置0"), - LarBS1("大缓冲液扫码位置1"), - LarBS2("大缓冲液扫码位置2"), - LarBS3("大缓冲液扫码位置3"), - LarBS4("大缓冲液扫码位置4"), - LarBS5("大缓冲液扫码位置5"), + LarBS0("大缓冲液扫码位置0", Pos2d.class), + LarBS1("大缓冲液扫码位置1", Pos2d.class), + LarBS2("大缓冲液扫码位置2", Pos2d.class), + LarBS3("大缓冲液扫码位置3", Pos2d.class), + LarBS4("大缓冲液扫码位置4", Pos2d.class), + LarBS5("大缓冲液扫码位置5", Pos2d.class), ; public final String chName; + public final Class type; - Hbot2DCodeScanPos(String chName) { + Hbot2DCodeScanPos(String chName, Class type) { this.chName = chName; + this.type = type; } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/HbotLargeBottleBSPos.java b/src/main/java/a8k/service/app/devicectrl/param/type/HbotLargeBottleBSPos.java index 4186e26..f8639c2 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/HbotLargeBottleBSPos.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/HbotLargeBottleBSPos.java @@ -1,16 +1,20 @@ package a8k.service.app.devicectrl.param.type; +import a8k.type.cfg.Pos2d; + public enum HbotLargeBottleBSPos { - LargeBuffer_0Pos("大瓶缓冲液的第1个位置"), - LargeBuffer_DX("大瓶缓冲液的X间距"), - LargeBuffer_DY("大瓶缓冲液的Y间距"), - LargeBSSSampleZPos("大瓶缓冲液取样Z坐标"), - LargeBSSSampleEndZPos("大瓶缓冲液取样结束Z坐标"), + LargeBuffer_0Pos("大瓶缓冲液的第1个位置", Pos2d.class), + LargeBuffer_DX("大瓶缓冲液的X间距",Double.class), + LargeBuffer_DY("大瓶缓冲液的Y间距",Double.class), + LargeBSSSampleZPos("大瓶缓冲液取样Z坐标",Integer.class), + LargeBSSSampleEndZPos("大瓶缓冲液取样结束Z坐标",Integer.class), ; final public String chName; + final public Class type ; - HbotLargeBottleBSPos(String chName) { + HbotLargeBottleBSPos(String chName,Class type) { this.chName = chName; + this.type = type; } public static HbotLargeBottleBSPos valueOf(int off) { diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/HbotLittleBSPos.java b/src/main/java/a8k/service/app/devicectrl/param/type/HbotLittleBSPos.java index 3909356..220be89 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/HbotLittleBSPos.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/HbotLittleBSPos.java @@ -1,23 +1,27 @@ package a8k.service.app.devicectrl.param.type; +import a8k.type.cfg.Pos2d; + public enum HbotLittleBSPos { - LittleBufferGroup0_000Pos("第1组小瓶缓冲液的第1个位置"), - LittleBufferGroup1_000Pos("第1组小瓶缓冲液的第2个位置"), - LittleBufferGroup2_000Pos("第1组小瓶缓冲液的第3个位置"), - LittleBufferGroup3_000Pos("第1组小瓶缓冲液的第4个位置"), - LittleBufferGroup4_000Pos("第1组小瓶缓冲液的第5个位置"), - LittleBufferGroup5_000Pos("第1组小瓶缓冲液的第6个位置"), - LittleBufferGroupDX("小瓶缓冲液的X间距"), - LittleBufferGroupDY("小瓶缓冲液的Y间距"), + LittleBufferGroup0_000Pos("第1组小瓶缓冲液的第1个位置", Pos2d.class), + LittleBufferGroup1_000Pos("第1组小瓶缓冲液的第2个位置", Pos2d.class), + LittleBufferGroup2_000Pos("第1组小瓶缓冲液的第3个位置", Pos2d.class), + LittleBufferGroup3_000Pos("第1组小瓶缓冲液的第4个位置", Pos2d.class), + LittleBufferGroup4_000Pos("第1组小瓶缓冲液的第5个位置", Pos2d.class), + LittleBufferGroup5_000Pos("第1组小瓶缓冲液的第6个位置", Pos2d.class), + LittleBufferGroupDX("小瓶缓冲液的X间距", Double.class), + LittleBufferGroupDY("小瓶缓冲液的Y间距", Double.class), - LittleBSPierceZPos("小瓶缓冲液刺破Z坐标"), - // LittleBSSampleZPos("小瓶缓冲液取样Z坐标"), - LittleBSSampleEndZPos("小瓶缓冲液取样结束Z坐标"), + LittleBSPierceXYAppendDistance("小瓶缓冲液刺破XY附加距离", Double.class), + LittleBSPierceZPos("小瓶缓冲液刺破Z坐标", Integer.class), + LittleBSSampleZPos("小瓶缓冲液取样Z坐标", Integer.class), ; final public String chName; + final public Class type; - HbotLittleBSPos(String chName) { + HbotLittleBSPos(String chName, Class type) { this.chName = chName; + this.type = type; } public static HbotLittleBSPos valueOf(int off) { diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/HbotProbeSubstancePos.java b/src/main/java/a8k/service/app/devicectrl/param/type/HbotProbeSubstancePos.java index 0565542..31ffa5b 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/HbotProbeSubstancePos.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/HbotProbeSubstancePos.java @@ -1,23 +1,29 @@ package a8k.service.app.devicectrl.param.type; -public enum HbotProbeSubstancePos { - ProbeSubstanceGroup0_000Pos("第1组探测物质的第1个位置"), - ProbeSubstanceGroup1_000Pos("第1组探测物质的第2个位置"), - ProbeSubstanceGroup2_000Pos("第1组探测物质的第3个位置"), - ProbeSubstanceGroup3_000Pos("第1组探测物质的第4个位置"), - ProbeSubstanceGroup4_000Pos("第1组探测物质的第5个位置"), - ProbeSubstanceGroup5_000Pos("第1组探测物质的第6个位置"), - ProbeSubstanceDX("探测物质的X间距"), - ProbeSubstanceDY("探测物质的Y间距"), +import a8k.type.cfg.Pos2d; +import a8k.type.cfg.Pos3d; - // ProbeSubstanceSampleZPos("探测物质取样Z坐标"), - ProbeSubstanceSampleEndZPos("探测物质取样结束Z坐标"),//刺破高度和取样高度一样 +public enum HbotProbeSubstancePos { + ProbeSubstanceGroup0_000Pos("第1组探测物质的第1个位置", Pos3d.class), + ProbeSubstanceGroup1_000Pos("第1组探测物质的第2个位置",Pos3d.class), + ProbeSubstanceGroup2_000Pos("第1组探测物质的第3个位置",Pos3d.class), + ProbeSubstanceGroup3_000Pos("第1组探测物质的第4个位置",Pos3d.class), + ProbeSubstanceGroup4_000Pos("第1组探测物质的第5个位置",Pos3d.class), + ProbeSubstanceGroup5_000Pos("第1组探测物质的第6个位置",Pos3d.class), + ProbeSubstanceDX("探测物质的X间距",Double.class), + ProbeSubstanceDY("探测物质的Y间距",Double.class), + ProbeSubstancePierceXYAppendDistance("探测物质液刺破XY附加距离",Double.class), + ProbeSubstancePierceZPos("探测物质液刺破Z坐标",Integer.class), + // ProbeSubstanceSampleZPos(探测物质取样Z坐标.class), + ProbeSubstanceSampleZPos("探测物质取样结束Z坐标",Integer.class),//刺破高度和取样高度一样 ; final public String chName; + final public Class type; - HbotProbeSubstancePos(String chName) { + HbotProbeSubstancePos(String chName,Class type) { this.chName = chName; + this.type = type; } public static HbotProbeSubstancePos valueOf(int off) { diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/HbotSamplePos.java b/src/main/java/a8k/service/app/devicectrl/param/type/HbotSamplePos.java index ec83bad..e03e676 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/HbotSamplePos.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/HbotSamplePos.java @@ -1,35 +1,38 @@ package a8k.service.app.devicectrl.param.type; +import a8k.type.cfg.Pos3d; + public enum HbotSamplePos { - EmergencyTubeSamplePos("<急诊位>取样位置"), - EmergencyTubeSampleEndPos("<急诊位>取样结束位置"), + EmergencyTubeSamplePos("<急诊位>取样位置", Pos3d.class), + EmergencyTubeSampleEndPos("<急诊位>取样结束位置", Pos3d.class), - BloodHTubeSamplePos("<全血高试管>取样位置"), - BloodHTubeSampleEndPos("<全血高试管>取样结束位置"), + BloodHTubeSamplePos("<全血高试管>取样位置", Pos3d.class), + BloodHTubeSampleEndPos("<全血高试管>取样结束位置", Pos3d.class), - BloodSTubeSamplePos("<全血低试管>取样位置"), - BloodSTubeSampleEndPos("<全血低试管>取样结束位置"), + BloodSTubeSamplePos("<全血低试管>取样位置", Pos3d.class), + BloodSTubeSampleEndPos("<全血低试管>取样结束位置", Pos3d.class), - MiniTubeSamplePos("<迷你试管>取样位置"), - MinitubeSampleEndPos("<迷你试管>取样结束位置"), + MiniTubeSamplePos("<迷你试管>取样位置", Pos3d.class), + MinitubeSampleEndPos("<迷你试管>取样结束位置", Pos3d.class), - MiniBloodSamplePos("<阳普管>取样位置"), - MiniBloodSampleEndPos("<阳普管>取样结束位置"), + MiniBloodSamplePos("<阳普管>取样位置", Pos3d.class), + MiniBloodSampleEndPos("<阳普管>取样结束位置", Pos3d.class), - Bulltube1P5SamplePos("<子弹头试管1.5mL>取样位置"), - Bulltube1P5SampleEndPos("<子弹头试管1.5mL>取样结束位置"), + Bulltube1P5SamplePos("<子弹头试管1.5mL>取样位置", Pos3d.class), + Bulltube1P5SampleEndPos("<子弹头试管1.5mL>取样结束位置", Pos3d.class), - Bulltube0P5SamplePos("<子弹头试管0.5mL>取样位置"), - Bulltube0P5SampleEndPos("<子弹头试管0.5mL>取样结束位置"), + Bulltube0P5SamplePos("<子弹头试管0.5mL>取样位置", Pos3d.class), + Bulltube0P5SampleEndPos("<子弹头试管0.5mL>取样结束位置", Pos3d.class), - StoolTestTubeSamplePos("<粪便试管>取样位置"), - StoolTestTubeSampleEndPos("<粪便试管>取样结束位置"), + StoolTestTubeSamplePos("<粪便试管>取样位置", Pos3d.class), + StoolTestTubeSampleEndPos("<粪便试管>取样结束位置", Pos3d.class), ; - public final String chName; + public final String chName; + public final Class type; - HbotSamplePos(String chName) { + HbotSamplePos(String chName, Class type) { this.chName = chName; + this.type = type; } - } diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/HbotTipPosParam.java b/src/main/java/a8k/service/app/devicectrl/param/type/HbotTipPosParam.java index 3fcb1a3..65de849 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/HbotTipPosParam.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/HbotTipPosParam.java @@ -1,24 +1,29 @@ package a8k.service.app.devicectrl.param.type; +import a8k.type.cfg.Pos3d; + public enum HbotTipPosParam { - TipGroup0_000Pos("第1组TIP的第1个位置"), - TipGroup0_SpaceingX("第1组TIP的X间距"), - TipGroup0_SpaceingY("第1组TIP的Y间距"), + TipGroup0_000Pos("第1组TIP的第1个位置", Pos3d.class), + TipGroup0_SpaceingX("第1组TIP的X间距", Double.class), + TipGroup0_SpaceingY("第1组TIP的Y间距", Double.class), - TipGroup1_000Pos("第2组TIP的第1个位置"), - TipGroup1_SpaceingX("第2组TIP的X间距"), - TipGroup1_SpaceingY("第2组TIP的Y间距"), + TipGroup1_000Pos("第2组TIP的第1个位置", Pos3d.class), + TipGroup1_SpaceingX("第2组TIP的X间距", Double.class), + TipGroup1_SpaceingY("第2组TIP的Y间距", Double.class), - TipGroup2_000Pos("第3组TIP的第1个位置"), - TipGroup2_SpaceingX("第3组TIP的X间距"), - TipGroup2_SpaceingY("第3组TIP的Y间距"), + TipGroup2_000Pos("第3组TIP的第1个位置", Pos3d.class), + TipGroup2_SpaceingX("第3组TIP的X间距", Double.class), + TipGroup2_SpaceingY("第3组TIP的Y间距", Double.class), - DropTipPos("丢TIP位置"), + DropTipPos("丢TIP位置", Pos3d.class), ; final public String chName; + final public Class type; - HbotTipPosParam(String chName) { + HbotTipPosParam(String chName, Class type) { this.chName = chName; + this.type = type; + } public static HbotTipPosParam valueOf(int off) { diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/OptModuleExtParam.java b/src/main/java/a8k/service/app/devicectrl/param/type/OptModuleExtParam.java index ea210cf..d788714 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/OptModuleExtParam.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/OptModuleExtParam.java @@ -1,20 +1,22 @@ package a8k.service.app.devicectrl.param.type; public enum OptModuleExtParam { - OptScanRefPos("光学扫描参考坐标"), + OptScanRefPos("光学扫描参考坐标", Integer.class), - FOptScanShift("F光学扫描偏移"), - FOptEmissionIntensity("F发射强度"),//Int - FOptScanGainVal("F光学扫描放大倍数"),//Double + FOptScanShift("F光学扫描偏移", Integer.class), + FOptEmissionIntensity("F发射强度", Integer.class),//Int + FOptScanGainVal("F光学扫描放大倍数", Double.class),//Double - TOptScanShift("T光学扫描偏移"), - TOptEmissionIntensity("T发射强度"), - TOptScanGainVal("T光学扫描放大倍数"), + TOptScanShift("T光学扫描偏移", Integer.class), + TOptEmissionIntensity("T发射强度", Integer.class), + TOptScanGainVal("T光学扫描放大倍数", Double.class), ; - public final String chName; + public final String chName; + public final Class type; - OptModuleExtParam(String chName) { + OptModuleExtParam(String chName, Class type) { this.chName = chName; + this.type = type; } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/OptModuleParam.java b/src/main/java/a8k/service/app/devicectrl/param/type/OptModuleParam.java index 6e48399..ece70ea 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/OptModuleParam.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/OptModuleParam.java @@ -1,13 +1,15 @@ package a8k.service.app.devicectrl.param.type; public enum OptModuleParam { - PullerTargetPos("拉板目标位置"), - OptScanerDropPos("丢板坐标"), - OptScanerScandbyPos("扫描待机位"), + PullerTargetPos("拉板目标位置", Integer.class), + OptScanerDropPos("丢板坐标", Integer.class), + OptScanerScandbyPos("扫描待机位", Integer.class), ; public final String chName; + public final Class type; - OptModuleParam(String chName) { + OptModuleParam(String chName, Class type) { this.chName = chName; + this.type = type; } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLDThresholdParam.java b/src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLDThresholdParam.java index fb32def..6c88fde 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLDThresholdParam.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLDThresholdParam.java @@ -1,12 +1,14 @@ package a8k.service.app.devicectrl.param.type; public enum PipetteGunLLDThresholdParam { - DEFAULT_C_THRESHOLD("默认电容C阈值"), - DEFAULT_P_THRESHOLD("默认压力阈值"), + DEFAULT_C_THRESHOLD("默认电容C阈值", Integer.class), + DEFAULT_P_THRESHOLD("默认压力阈值", Integer.class), ; - public final String chName; + public final String chName; + public final Class type; - PipetteGunLLDThresholdParam(String chName) { + PipetteGunLLDThresholdParam(String chName, Class type) { this.chName = chName; + this.type = type; } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLDTypeParam.java b/src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLDTypeParam.java index 73c3bc7..8ef95da 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLDTypeParam.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLDTypeParam.java @@ -1,11 +1,15 @@ package a8k.service.app.devicectrl.param.type; +import a8k.hardware.type.LldType; + public enum PipetteGunLLDTypeParam { - DEFAULT_LLD_TYPE("默认LLD类型"), + DEFAULT_LLD_TYPE("默认LLD类型", LldType.class), ; public final String chName; + public final Class type; - PipetteGunLLDTypeParam(String chName) { + PipetteGunLLDTypeParam(String chName, Class type) { this.chName = chName; + this.type = type; } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLFParam.java b/src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLFParam.java index a982546..74c81b8 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLFParam.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLFParam.java @@ -2,20 +2,22 @@ package a8k.service.app.devicectrl.param.type; public enum PipetteGunLLFParam { // 试管容器参数 - EMERGENCY_TUBE_LLF_VEL("<急诊试管>液面跟随速度"), - BLOOD_TUBE_LLF_VEL("<全血试管>液面跟随速度"), - MINI_TUBE_LLF_VEL("<迷你试管>液面跟随速度"), - MINI_BLOOD_LLF_VEL("<阳普管>液面跟随速度"), - BULLET_TUBE_1P5_LLF_VEL("<子弹头试管1.5ML>液面跟随速度"), - BULLET_TUBE_0P5_LLF_VEL("<子弹头试管0.5ML>液面跟随速度"), - STOOL_TEST_TUBE_LLF_VEL("<粪便试管>液面跟随速度"), + EMERGENCY_TUBE_LLF_VEL("<急诊试管>液面跟随速度",Double.class), + BLOOD_TUBE_LLF_VEL("<全血试管>液面跟随速度",Double.class), + MINI_TUBE_LLF_VEL("<迷你试管>液面跟随速度",Double.class), + MINI_BLOOD_LLF_VEL("<阳普管>液面跟随速度",Double.class), + BULLET_TUBE_1P5_LLF_VEL("<子弹头试管1.5ML>液面跟随速度",Double.class), + BULLET_TUBE_0P5_LLF_VEL("<子弹头试管0.5ML>液面跟随速度",Double.class), + STOOL_TEST_TUBE_LLF_VEL("<粪便试管>液面跟随速度",Double.class), //耗材容器参数 - LARGE_BS_BOTTLE_LLF_VEL("<大瓶缓冲液>液面跟随速度"), + LARGE_BS_BOTTLE_LLF_VEL("<大瓶缓冲液>液面跟随速度",Double.class), ; public final String chName; + public final Class type; - PipetteGunLLFParam(String chName) { + PipetteGunLLFParam(String chName, Class type) { this.chName = chName; + this.type = type; } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/TemperatureCtrlParam.java b/src/main/java/a8k/service/app/devicectrl/param/type/TemperatureCtrlParam.java index 3794a23..c2af938 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/TemperatureCtrlParam.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/TemperatureCtrlParam.java @@ -3,13 +3,15 @@ package a8k.service.app.devicectrl.param.type; public enum TemperatureCtrlParam { - IncubatorTCMTempOffset("<孵育仓>温度偏移"), - PlatesBoxTCMTempOffset("<板夹仓>温度偏移"), + IncubatorTCMTempOffset("<孵育仓>温度偏移", Double.class), + PlatesBoxTCMTempOffset("<板夹仓>温度偏移", Double.class), ; public final String chName; + public final Class type; - TemperatureCtrlParam(String chName) { + TemperatureCtrlParam(String chName, Class type) { this.chName = chName; + this.type = type; } diff --git a/src/main/java/a8k/service/app/devicectrl/param/type/TubePreProcessZAxisPos.java b/src/main/java/a8k/service/app/devicectrl/param/type/TubePreProcessZAxisPos.java index 80a8821..5b721fe 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/type/TubePreProcessZAxisPos.java +++ b/src/main/java/a8k/service/app/devicectrl/param/type/TubePreProcessZAxisPos.java @@ -1,12 +1,15 @@ package a8k.service.app.devicectrl.param.type; public enum TubePreProcessZAxisPos { - ZMotorTakeHTubePos("取高试管位置"),// - ZMotorTakeSTubePos("取低试管位置"),// - ZMotorShakeTubePos("摇匀放置位置"),// + ZMotorTakeHTubePos("取高试管位置",Integer.class),// + ZMotorTakeSTubePos("取低试管位置",Integer.class),// + ZMotorShakeTubePos("摇匀放置位置",Integer.class),// ; public final String chName; - TubePreProcessZAxisPos(String chName) { + public final Class type; + + TubePreProcessZAxisPos(String chName, Class type) { this.chName = chName; + this.type = type; } } diff --git a/src/main/java/a8k/service/app/devicectrl/script/DeviceCtrlScripter.java b/src/main/java/a8k/service/app/devicectrl/script/DeviceCtrlScripter.java index cb07818..ec485b0 100644 --- a/src/main/java/a8k/service/app/devicectrl/script/DeviceCtrlScripter.java +++ b/src/main/java/a8k/service/app/devicectrl/script/DeviceCtrlScripter.java @@ -190,7 +190,7 @@ public class DeviceCtrlScripter { aspirate(PipetteGunBindActionType.TAKE_LARGE_BUFFER_SOLUTION, ctx, takeul); //移动到吐液位 - hbotCtrlService.moveTo(hbotConsumableParamMgr.getProbeSubstanceSamplePosEnd(ctx.getConsumable().getGroup(), ctx.getConsumable().getPos())); + hbotCtrlService.moveTo(hbotConsumableParamMgr.getProbeSubstanceSamplePos(ctx.getConsumable().getGroup(), ctx.getConsumable().getPos())); //吐液 distribute(PipetteGunBindActionType.DISTRIBUTION_LARGE_BUFFER_SOLUTION_PROBE_SUBSTANCE, ctx, takeul); diff --git a/src/main/java/a8k/service/dao/LowerDeviceParameterDao.java b/src/main/java/a8k/service/dao/LowerDeviceParameterDao.java index 75cffe7..ebf0e35 100644 --- a/src/main/java/a8k/service/dao/LowerDeviceParameterDao.java +++ b/src/main/java/a8k/service/dao/LowerDeviceParameterDao.java @@ -12,6 +12,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; +import org.springframework.util.Assert; import java.sql.ResultSet; import java.util.List; @@ -48,12 +49,14 @@ public class LowerDeviceParameterDao { void init() { zSqlite = new ZSqlite<>(); zSqlite.init(jdbcTemplate, tableName, tClass); + zSqlite.forceDeleteTable(); + zSqlite.createTable(); //初始化表 - recoveryAllParam(); + // recoveryAllParam(); } - @SneakyThrows private Parameter rowMapper(ResultSet rs, int rowNum) {return zSqlite.rowMapperList(rs,rowNum);} + @SneakyThrows private Parameter rowMapper(ResultSet rs, int rowNum) {return zSqlite.rowMapperList(rs, rowNum);} // // GETTER @@ -66,6 +69,7 @@ public class LowerDeviceParameterDao { } Parameter parameter = list.get(0); + Assert.isTrue(tClass.getSimpleName().equals(parameter.valType), "参数类型不匹配"); return ZJsonHelper.objectFromJson(parameter.val, tClass); } @@ -83,59 +87,36 @@ public class LowerDeviceParameterDao { } - public void setParamChName(String service, String key, String chName) { - Parameter old = getParam(service, key); + public void initParam(String service, String key, String chName, Class type) { + Parameter old = storgeDB.findByServiceAndKey(service, key); if (old == null) { - Parameter newobj = new Parameter(); - newobj.service = service; - newobj.key = key; - newobj.chName = chName; - zSqlite.add(newobj); - } else { - // { - // zSqlite.delete(jdbcTemplate, tableName, old.id); - // Parameter newobj = old.deepCopy(); - // newobj.id = 0; - // newobj.chName = chName; - // zSqlite.addObj( newobj); - // } - - { - if (old.chName != null && old.chName.equals(chName)) { - return; - } - Parameter newobj = old.deepCopy(); - newobj.chName = chName; - zSqlite.update(newobj); - } - + old = new Parameter(); } + old.id = 0; + old.service = service; + old.key = key; + old.chName = chName; + old.valType = type.getSimpleName(); + zSqlite.add(old); } + // // SETTER // - public void updateParam(String service, String key, Object pos) { - logger.info("updateParam: service={}, key={}, pos={}", service, key, pos); + public void updateParam(String service, String key, Object param) { + logger.info("updateParam: service={}, key={}, param={}", service, key, param); ObjectMapper objectMapper = new ObjectMapper(); List list = jdbcTemplate.query("select * from " + tableName + " where service = ? and key = ?;", this::rowMapper, service, key); - if (list.isEmpty()) { - Parameter parameter = new Parameter(); - parameter.service = service; - parameter.key = key; - parameter.val = ZJsonHelper.createObjectNode(pos); - parameter.valType = pos.getClass().getSimpleName(); - zSqlite.add(parameter); - return; - } - + Assert.isTrue(list.size() == 1, "参数不存在,或者存在多个参数"); + Assert.isTrue(list.get(0).valType.equals(param.getClass().getSimpleName()), "参数类型不匹配"); Parameter parameter = list.get(0); - parameter.val = ZJsonHelper.createObjectNode(pos); + parameter.val = ZJsonHelper.createObjectNode(param); parameter.service = service; parameter.key = key; - parameter.valType = pos.getClass().getSimpleName(); + parameter.valType = param.getClass().getSimpleName(); zSqlite.update(parameter); } diff --git a/src/main/java/a8k/service/dao/utils/PosParameterReader.java b/src/main/java/a8k/service/dao/utils/PosParameterReader.java index 200e1c5..4c63431 100644 --- a/src/main/java/a8k/service/dao/utils/PosParameterReader.java +++ b/src/main/java/a8k/service/dao/utils/PosParameterReader.java @@ -29,10 +29,6 @@ public class PosParameterReader { return lowerDeviceParameterDao.getParam(this.service, key.name(), tClass); } - public void setParamChName(Enum key, String chName) { - lowerDeviceParameterDao.setParamChName(service, key.name(), chName); - } - public void setParam(String key, Object pos) { lowerDeviceParameterDao.updateParam(service, key, pos); diff --git a/src/main/java/a8k/type/TubeFeedingModulePos.java b/src/main/java/a8k/type/TubeFeedingModulePos.java index a958c01..fdb65c2 100644 --- a/src/main/java/a8k/type/TubeFeedingModulePos.java +++ b/src/main/java/a8k/type/TubeFeedingModulePos.java @@ -1,17 +1,19 @@ package a8k.type; public enum TubeFeedingModulePos { - TubeHolderEnterXPos("入料位置"), // - TubeHolderExitXPos("出料位置"), // - TubeHolderScanXPos("试管架扫描位置"), // - Tube0ScanPos("01号试管扫描位置"), // - Tube0AltitJudgPos("01试管高度判断位置"), // - Tube0ExistJudgPos("01试管存在判断位置"), // - Tube0PreProcessPos("01试管预处理位置"), // + TubeHolderEnterXPos("入料位置", Integer.class), // + TubeHolderExitXPos("出料位置", Integer.class), // + TubeHolderScanXPos("试管架扫描位置", Integer.class), // + Tube0ScanPos("01号试管扫描位置", Integer.class), // + Tube0AltitJudgPos("01试管高度判断位置", Integer.class), // + Tube0ExistJudgPos("01试管存在判断位置", Integer.class), // + Tube0PreProcessPos("01试管预处理位置", Integer.class), // ; public final String chName; + public final Class type; - TubeFeedingModulePos(String chName) { + TubeFeedingModulePos(String chName, Class type) { this.chName = chName; + this.type = type; } } diff --git a/src/main/java/a8k/type/TubeFeedingModuleSetting.java b/src/main/java/a8k/type/TubeFeedingModuleSetting.java index baf7de2..8dd390d 100644 --- a/src/main/java/a8k/type/TubeFeedingModuleSetting.java +++ b/src/main/java/a8k/type/TubeFeedingModuleSetting.java @@ -1,12 +1,14 @@ package a8k.type; public enum TubeFeedingModuleSetting { - TubeScanServoTorque("试管扫描伺服力矩"), // - TubeSpacing("试管间距"), // + TubeScanServoTorque("试管扫描伺服力矩",Integer.class), // + TubeSpacing("试管间距",Double.class), // ; public final String chName; + public final Class type; - TubeFeedingModuleSetting(String chName) { + TubeFeedingModuleSetting(String chName, Class type) { this.chName = chName; + this.type = type; } } diff --git a/src/main/java/a8k/type/TubePreProcessGripperPos.java b/src/main/java/a8k/type/TubePreProcessGripperPos.java index d4b554e..2efb19e 100644 --- a/src/main/java/a8k/type/TubePreProcessGripperPos.java +++ b/src/main/java/a8k/type/TubePreProcessGripperPos.java @@ -1,13 +1,15 @@ package a8k.type; public enum TubePreProcessGripperPos { - GripperServoOpenPos("<抓手>张开位置"),// - GripperServoTakeCapPos("<抓手>取试管位置"),// - GripperRedundancyHeight("<抓手>冗余高度"),// + GripperServoOpenPos("<抓手>张开位置", Integer.class),// + GripperServoTakeCapPos("<抓手>取试管位置", Integer.class),// + GripperRedundancyHeight("<抓手>冗余高度", Integer.class),// ; public final String chName; + public final Class type; - TubePreProcessGripperPos(String chName) { + TubePreProcessGripperPos(String chName, Class type) { this.chName = chName; + this.type = type; } } diff --git a/src/main/java/a8k/type/TubePreProcessTubeClamp.java b/src/main/java/a8k/type/TubePreProcessTubeClamp.java index 688ec66..4b44d30 100644 --- a/src/main/java/a8k/type/TubePreProcessTubeClamp.java +++ b/src/main/java/a8k/type/TubePreProcessTubeClamp.java @@ -1,12 +1,14 @@ package a8k.type; public enum TubePreProcessTubeClamp { - ShakeClampMotorClampPos("<摇匀试管夹>夹紧位"),// - ShakeClampMotorReleasePos("<摇匀试管夹>释放位"),// + ShakeClampMotorClampPos("<摇匀试管夹>夹紧位",Integer.class),// + ShakeClampMotorReleasePos("<摇匀试管夹>释放位",Integer.class),// ; public final String chName; + public final Class type; - TubePreProcessTubeClamp(String chName) { + TubePreProcessTubeClamp(String chName, Class type) { this.chName = chName; + this.type = type; } } diff --git a/src/main/java/a8k/type/TubePreProcessYPos.java b/src/main/java/a8k/type/TubePreProcessYPos.java index 9f0679f..070aa18 100644 --- a/src/main/java/a8k/type/TubePreProcessYPos.java +++ b/src/main/java/a8k/type/TubePreProcessYPos.java @@ -2,12 +2,14 @@ package a8k.type; public enum TubePreProcessYPos { - YServoTakeTubePos("取试管位置"),// - YServoShakePos("摇匀位置"),// + YServoTakeTubePos("取试管位置",Integer.class),// + YServoShakePos("摇匀位置",Integer.class),// ; public final String chName; + public final Class type; - TubePreProcessYPos(String chName) { + TubePreProcessYPos(String chName, Class type) { this.chName = chName; + this.type = type; } } diff --git a/src/main/java/a8k/unittest/TestBeforeRun.java b/src/main/java/a8k/unittest/TestBeforeRun.java index 2c7791e..cc98294 100644 --- a/src/main/java/a8k/unittest/TestBeforeRun.java +++ b/src/main/java/a8k/unittest/TestBeforeRun.java @@ -17,8 +17,8 @@ public class TestBeforeRun { @PostConstruct void init() { - LldType lddType = pipetteGunLLDParamMgr.getLLDType(PipetteGunLLDTypeParam.DEFAULT_LLD_TYPE); - Assert.isTrue(lddType != null, "LldType is null"); +// LldType lddType = pipetteGunLLDParamMgr.getLLDType(PipetteGunLLDTypeParam.DEFAULT_LLD_TYPE); +// Assert.isTrue(lddType != null, "LldType is null"); } } diff --git a/src/main/java/a8k/utils/ProjProcessContextUtils.java b/src/main/java/a8k/utils/ProjProcessContextUtils.java index c9d5ad6..5c36f85 100644 --- a/src/main/java/a8k/utils/ProjProcessContextUtils.java +++ b/src/main/java/a8k/utils/ProjProcessContextUtils.java @@ -159,7 +159,7 @@ public class ProjProcessContextUtils { A8kReactionFlowType type = ctx.getProjBuildinInfo().projBaseInfo.reactionFlowType; return switch (type) { case FlowType1 -> hbotConsumableParamMgr.getLittleBufferSamplePosEnd(ctx.getConsumable().getGroup(), ctx.getConsumable().getPos()); - case FlowType2 -> hbotConsumableParamMgr.getProbeSubstanceSamplePosEnd(ctx.getConsumable().getGroup(), ctx.getConsumable().getPos()); + case FlowType2 -> hbotConsumableParamMgr.getProbeSubstanceSamplePos(ctx.getConsumable().getGroup(), ctx.getConsumable().getPos()); }; } diff --git a/src/main/resources/app.db b/src/main/resources/app.db index 7dc4a5d94d88c3a4685430855b10a6d390874335..7415911adc9b826fdeb58870a1e1dfe0d847fe19 100644 GIT binary patch delta 10624 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 AR{#J2 delta 14046 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