Browse Source

fix some bug

master
zhaohe 3 months ago
parent
commit
c85129228b
  1. 33
      src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java
  2. 15
      src/main/java/a8k/app/service/background/TemperatureCtrlService.java
  3. 6
      src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java

33
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++) {

15
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());

6
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;

Loading…
Cancel
Save