From c85129228b9e98e002e1ca9ed951315451048638 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sun, 27 Apr 2025 20:13:13 +0800 Subject: [PATCH] fix some bug --- .../ExperimentConsistencyTestingService.java | 33 ++++++++++++++-------- .../service/background/TemperatureCtrlService.java | 15 ++++++++-- .../lowerctrl/LiquidOperationCtrlService.java | 6 ++-- 3 files changed, 37 insertions(+), 17 deletions(-) diff --git a/src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java b/src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java index aeb46e8..21a1f71 100644 --- a/src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java +++ b/src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java @@ -45,7 +45,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.Assert; -import javax.swing.*; import java.util.List; import java.util.Objects; @@ -62,9 +61,9 @@ import java.util.Objects; @RequiredArgsConstructor public class ExperimentConsistencyTestingService { - final private A8kTubeHolderType expectedTubeHolderType = A8kTubeHolderType.BulletTube1P5; - final private Integer expectedProjId = 1; - final private Integer takeSampleUl = 10; + // final private A8kTubeHolderType expectedTubeHolderType = A8kTubeHolderType.BulletTube1P5; + final private Integer expectedProjId = 1; + final private Integer takeSampleUl = 10; final private EngineerModeStateMgrService engineerModeStateMgrService; @@ -105,8 +104,8 @@ public class ExperimentConsistencyTestingService { private final HbotMoveCtrlService hbotMoveCtrlService; private final PipetteGunExParamMgr pipetteGunExParamMgr; - private TubeHolderSetting curTubeHolderSetting; + private A8kSamplePos samplePos; private TubeHolderExConfig tubeHolderExConfig = new TubeHolderExConfig(); synchronized public void submitTubeExConfig(TubeHolderExConfig tubeExTubeHolderExConfig) { @@ -282,6 +281,15 @@ public class ExperimentConsistencyTestingService { //核对试管架信息 verifyTubeHolderSettingAndTubeHolderScanResult(curTubeHolderSetting, scanResult); // + A8kTubeHolderType tubeHolderType = A8kTubeHolderType.of(scanResult.tubeHolderType); + if (A8kTubeHolderType.BulletTube1P5.equals(tubeHolderType)) { + samplePos = A8kSamplePos.Bulltube1P5Pos; + } else if (A8kTubeHolderType.BulletTube0P5.equals(tubeHolderType)) { + samplePos = A8kSamplePos.Bulltube0P5Pos; + } else { + throw AppException.of(A8kEcode.APPE_TUBE_HOLDER_TYPE_IS_NOT_SUPPORT, "请使用子弹头1.5ml或者子弹头0.5ml试管架"); + } + //构建试管架 // setTubeHolderDirect @@ -340,10 +348,9 @@ public class ExperimentConsistencyTestingService { docmd("HBOT复位", hbotMoveExCtrlService::moveQuickToZero); } } - + tubeFeedingCtrlService.ejectTubeHolder(); incubationPlateProcess(true); - tubeFeedingCtrlService.ejectTubeHolder(); incubationPlateStateMgrService.resetAll(); UISender.txInfoPrompt(log, "试剂实验一致性检测完成"); } @@ -388,9 +395,11 @@ public class ExperimentConsistencyTestingService { //刺破缓冲液 hbotMoveExCtrlService.moveToLittleBufferPiercePos(consumableInfo.group, consumableInfo.pos); //取样品 - Assert.isTrue(expectedTubeHolderType.equals(A8kTubeHolderType.BulletTube1P5), "expectedTubeHolderType != BulletTube1P5"); - hbotMoveExCtrlService.moveToSamplePosXY(A8kSamplePos.Bulltube1P5Pos); - liquidOperationCtrlService.takeSample(A8kSamplePos.Bulltube1P5Pos, preProcessPos, takeSampleUl); + Assert.isTrue(!samplePos.equals(A8kSamplePos.EmergencyTubePos), "samplePos cannot be EmergencyTubePos"); + Assert.isTrue(!samplePos.equals(A8kSamplePos.BloodHTubePos), "samplePos cannot be BloodHTubePos"); + Assert.isTrue(!samplePos.equals(A8kSamplePos.BloodSTubePos), "samplePos cannot be BloodSTubePos"); + hbotMoveExCtrlService.moveToSamplePosXY(samplePos); + liquidOperationCtrlService.takeSample(samplePos, preProcessPos, takeSampleUl); //取混合液到预反应位 liquidOperationCtrlService.takePreReactionLiquidToReation(preProcessPos); incubationPlateStateMgrService.startIncubating(freeIncubationPos, System.currentTimeMillis(), projBuildinInfo.reactionPlateIncubationTimeMin * 60); @@ -495,8 +504,8 @@ public class ExperimentConsistencyTestingService { private void verifyTubeHolderSettingAndTubeHolderScanResult(TubeHolderSetting tubeHolderSetting, TubeFeedingCtrlService.TubeHolderScanResult scanResult) throws AppException { A8kTubeHolderType tubeHolderType = A8kTubeHolderType.of(scanResult.tubeHolderType); - if (!expectedTubeHolderType.equals(tubeHolderType)) { - throw AppException.of(A8kEcode.APPE_TUBE_HOLDER_TYPE_IS_NOT_SUPPORT, "请使用子弹头1.5ml试管架"); + if (!tubeHolderType.equals(A8kTubeHolderType.BulletTube1P5) && !tubeHolderType.equals(A8kTubeHolderType.BulletTube0P5)) { + throw AppException.of(A8kEcode.APPE_TUBE_HOLDER_TYPE_IS_NOT_SUPPORT, "请使用子弹头1.5ml或者子弹头0.5ml试管架"); } for (int i = 0; i < tubeHolderSetting.tubeSettings.length; i++) { diff --git a/src/main/java/a8k/app/service/background/TemperatureCtrlService.java b/src/main/java/a8k/app/service/background/TemperatureCtrlService.java index ce5b8fd..2a43bfc 100644 --- a/src/main/java/a8k/app/service/background/TemperatureCtrlService.java +++ b/src/main/java/a8k/app/service/background/TemperatureCtrlService.java @@ -5,6 +5,7 @@ import a8k.OS; import a8k.app.hardware.A8kChannelStateMgr; import a8k.app.hardware.driver.TemperatureControlDriver; import a8k.app.service.setting.AppSettingsMgrService; +import a8k.app.service.statemgr.GStateMgrService; import a8k.app.teststate.VirtualDevice; import a8k.app.type.error.AppError; import a8k.app.type.exception.AppException; @@ -27,6 +28,7 @@ public class TemperatureCtrlService { private final AppSettingsMgrService appSettingsMgrService; private final AppEventBusService eventBus; private final A8kChannelStateMgr a8kChannelStateMgr; + private final GStateMgrService gStateMgrService; Integer targetIncubatorTemperatureSetVal = null; @@ -62,7 +64,17 @@ public class TemperatureCtrlService { continue; } - if(!a8kChannelStateMgr.isCanBusConnected()){ + if (!a8kChannelStateMgr.isCanBusConnected()) { + OS.forceSleep(1000); + continue; + } + + if (!gStateMgrService.isDeviceInited()) { + OS.forceSleep(1000); + continue; + } + + if (!gStateMgrService.getBoardParamInited()) { OS.forceSleep(1000); continue; } @@ -119,7 +131,6 @@ public class TemperatureCtrlService { } - private void startCtrlTemperature(Integer incubatorTemperature, Integer platesBoxTemperature) throws AppException { log.info("start control incubatorTemperature: {},platesBoxTemperature: {}", incubatorTemperature, platesBoxTemperature); temperatureControlDriver.startCtrlTemperature(incubatorTemperature.doubleValue(), platesBoxTemperature.doubleValue()); diff --git a/src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java index c7d3e31..ea553a8 100644 --- a/src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java @@ -32,9 +32,9 @@ import org.springframework.stereotype.Component; public class LiquidOperationCtrlService { static public final Integer helicalPitch = 80; - static public final Integer LLD_ZMOTOR_VMAX = 50 * 80 / helicalPitch; + static public final Integer LLD_ZMOTOR_VMAX = 60 * 80 / helicalPitch; static public final Integer LLD_GUN_PUMP_VMAX = 40; - static public final Integer LLD_P_THRESHOLD = 50;//30时候可行,将其调整到50,增加容错性 + static public final Integer LLD_P_THRESHOLD = 60;//30时候可行,将其调整到50,增加容错性 static public final Integer ASPIRATE_PUMP_VMAX = 100; static public final Double ASPIRATE_PRE_TAKE = 20.0;// 吸取前预吸量 @@ -45,7 +45,7 @@ public class LiquidOperationCtrlService { static public final Integer BLOOD_TUBE_LLF_VEL = 25 * 80 / helicalPitch;// <全血试管>液面跟随速度 static public final Integer MINI_TUBE_LLF_VEL = 25 * 80 / helicalPitch;// <迷你试管>液面跟随速度 static public final Integer MINI_BLOOD_LLF_VEL = 25 * 80 / helicalPitch;// <阳普管>液面跟随速度 - static public final Integer BULLET_TUBE_1P5_LLF_VEL = 25 * 80 / helicalPitch;// <子弹头试管1.5ML>液面跟随速度 + static public final Integer BULLET_TUBE_1P5_LLF_VEL = 30 * 80 / helicalPitch;// <子弹头试管1.5ML>液面跟随速度 static public final Integer BULLET_TUBE_0P5_LLF_VEL = 25 * 80 / helicalPitch;// <子弹头试管0.5ML>液面跟随速度 static public final Integer STOOL_TEST_TUBE_LLF_VEL = 25 * 80 / helicalPitch;// <粪便试管>液面跟随速度 static public final Integer LARGE_BS_BOTTLE_LLF_VEL = 10 * 80 / helicalPitch;