diff --git a/src/main/java/a8k/app/engineer/service/qatest/LiquidAbsorptionAndDistributionTestService.java b/src/main/java/a8k/app/engineer/service/qatest/LiquidAbsorptionAndDistributionTestService.java index 2d07b63..b2da28f 100644 --- a/src/main/java/a8k/app/engineer/service/qatest/LiquidAbsorptionAndDistributionTestService.java +++ b/src/main/java/a8k/app/engineer/service/qatest/LiquidAbsorptionAndDistributionTestService.java @@ -69,6 +69,10 @@ public class LiquidAbsorptionAndDistributionTestService { } } + synchronized public void setTakeTipEachTime(boolean takeTipEachTime) { + config.takeTipEachTime = takeTipEachTime; + } + /** * 吸取并分配液体 * @param ul ul @@ -76,32 +80,31 @@ public class LiquidAbsorptionAndDistributionTestService { */ public void absorbAndDistribute(Integer ul) throws AppException { log.info("吸取并分配液体 {}", ul); - return; -// /* -// * 检查当前是否有其他项目正在进行测试 -// */ -// BeforeDoEngineerActionChecker.check(); -// -// actionExecutor.start(() -> { -// -// -// try { -// actionExecutor.docmd("移液", () -> { -// if (config.takeTipEachTime) -// hbotMoveExCtrlService.dropTip(); -// takeTip(); -// lld(); -// if (liquidPos == 0) -// throw AppException.ofAECodeError("未检测到液体"); -// takeLiquid(ul * 1.0); -// distributeLiquid(); -// resetPos(); -// }); -// -// } catch (AppException e) { -// UISender.txErrorPrompt(e); -// } -// }); + /* + * 检查当前是否有其他项目正在进行测试 + */ + BeforeDoEngineerActionChecker.check(); + + actionExecutor.start(() -> { + + + try { + actionExecutor.docmd("移液", () -> { + if (config.takeTipEachTime) + hbotMoveExCtrlService.dropTip(); + takeTip(); + lld(); + if (liquidPos == 0) + throw AppException.ofAECodeError("未检测到液体"); + takeLiquid(ul * 1.0); + distributeLiquid(); + resetPos(); + }); + + } catch (AppException e) { + UISender.txErrorPrompt(e); + } + }); } /** @@ -174,8 +177,8 @@ public class LiquidAbsorptionAndDistributionTestService { } private void takeLiquid(Double ul) throws AppException { - hbotMoveExCtrlService.moveToLargeBSSamplePosXY(ConsumableGroup.CG1); - pipetteCtrlDriver.zMotorMoveToBlock(0); + // hbotMoveExCtrlService.moveToLargeBSSamplePosXY(ConsumableGroup.CG1); + // pipetteCtrlDriver.zMotorMoveToBlock(0); //OLD CODE // pumpMoveTo(8000, 0.0); @@ -198,14 +201,13 @@ public class LiquidAbsorptionAndDistributionTestService { ul = pipetteGunExParamMgr.calibrateVolume(ul); log.info("取液体 {}", ul); pipetteCtrlDriver.pipetteAspirate(ul); - pipetteCtrlDriver.zMotorMoveToBlock(0); + pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock(); } private void distributeLiquid() throws AppException { - hbotMoveExCtrlService.moveToLargeBSSamplePosXY(ConsumableGroup.CG6); - pipetteCtrlDriver.zMotorMoveToBlock(50); + hbotMoveExCtrlService.moveToLargeBSSamplePos(ConsumableGroup.CG6); pumpMoveTo(8000, 0.0); - pipetteCtrlDriver.zMotorMoveToBlock(0); + pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock(); } private void resetPos() throws AppException { diff --git a/src/main/java/a8k/app/engineer/service/utils/BeforeDoEngineerActionChecker.java b/src/main/java/a8k/app/engineer/service/utils/BeforeDoEngineerActionChecker.java index 82e20cc..036ed21 100644 --- a/src/main/java/a8k/app/engineer/service/utils/BeforeDoEngineerActionChecker.java +++ b/src/main/java/a8k/app/engineer/service/utils/BeforeDoEngineerActionChecker.java @@ -23,6 +23,10 @@ public class BeforeDoEngineerActionChecker { /* * 检查当前是否有其他项目正在进行测试 */ + if (!gStateMgrService.isDeviceInited()) { + throw AppException.of(A8kEcode.DEVICE_NOT_INIT); + } + if (engineerModeStateMgrService.getState().equals(EngineerWorkState.WORKING)) { throw AppException.of(A8kEcode.DEVICE_IS_BUSY, "当前正执行其他工程师模式下的动作"); } diff --git a/src/main/java/a8k/app/hardware/type/A8kEcode.java b/src/main/java/a8k/app/hardware/type/A8kEcode.java index 08ab08a..589f6cc 100644 --- a/src/main/java/a8k/app/hardware/type/A8kEcode.java +++ b/src/main/java/a8k/app/hardware/type/A8kEcode.java @@ -28,6 +28,7 @@ public enum A8kEcode { LOGIN_OUT_ERROR_DEVICE_IS_WORKING(16), //设备正在工作中,不允许退出登录 DEVICE_IS_BUSY(17), //设备正在工作中,不允许操作 SYS_EXCEPTION(18), //系统异常 + DEVICE_NOT_INIT(19), //设备未初始化 // // 参数错误 diff --git a/src/main/java/a8k/app/i18n/Internationalization.java b/src/main/java/a8k/app/i18n/Internationalization.java index ae1943e..ba20272 100644 --- a/src/main/java/a8k/app/i18n/Internationalization.java +++ b/src/main/java/a8k/app/i18n/Internationalization.java @@ -71,6 +71,7 @@ public class Internationalization { case DEVICE_STARTUP_IN_PROGRESS -> "设备启动中,请稍后"; case DEVICE_IS_BUSY -> "设备忙"; case SYS_EXCEPTION -> "系统异常"; + case DEVICE_NOT_INIT -> "设备未初始化"; default -> ecode.toString(); }; } diff --git a/src/main/java/a8k/extui/page/extapp/profession_test/P01PipetteGunVerification.java b/src/main/java/a8k/extui/page/extapp/profession_test/P01PipetteGunVerification.java index 11dd5eb..7d1a67a 100644 --- a/src/main/java/a8k/extui/page/extapp/profession_test/P01PipetteGunVerification.java +++ b/src/main/java/a8k/extui/page/extapp/profession_test/P01PipetteGunVerification.java @@ -43,7 +43,9 @@ public class P01PipetteGunVerification { page.newGroup("测试0"); page.addFunction("取一次10ul", this::aspirate10ul); page.addFunction("取一次75ul", this::aspirate75ul); + page.newGroup("测试1"); + page.addFunction("取一次", this::aspirate); page.addFunction("取一次5ul", this::aspirate5ul); page.addFunction("取一次30ul", this::aspirate30ul); page.addFunction("取一次50ul", this::aspirate50ul); @@ -55,6 +57,10 @@ public class P01PipetteGunVerification { pipetteGunExParamMgr.setVolumeCalibrationCoefficient(coefficientA, coefficientB); } + public void aspirate(Integer ul,Boolean takeTipEachTime) throws AppException { + liquidAbsorptionAndDistributionTestService.setTakeTipEachTime(takeTipEachTime); + liquidAbsorptionAndDistributionTestService.absorbAndDistribute(ul); + } public void aspirate10ul() throws AppException { liquidAbsorptionAndDistributionTestService.absorbAndDistribute(10);