Browse Source

1.0.6| 添加温度就绪状态

master
zhaohe 6 days ago
parent
commit
453a9aeae8
  1. 26
      src/main/java/a8k/app/service/background/TemperatureSyncService.java
  2. 6
      src/main/java/a8k/app/service/lowerctrl/TurntableMoveCtrlService.java
  3. 8
      src/main/java/a8k/app/service/statemgr/GStateMgrService.java
  4. 7
      src/main/java/a8k/app/service/virtualstate/DeviceVirtualStateMgrService.java
  5. 27
      src/main/java/a8k/app/type/a8k/state/SensorState.java
  6. 22
      src/main/java/a8k/extui/page/test/verification/P31ReactionPlatesTransmitPosVerificationPage.java

26
src/main/java/a8k/app/service/background/TemperatureSyncService.java

@ -7,6 +7,7 @@ import a8k.app.iflytophald.driver.OutputIOCtrlDriver;
import a8k.app.iflytophald.driver.WaterTemperatureControllerDriver;
import a8k.app.iflytophald.type.protocol.InputIOId;
import a8k.app.iflytophald.type.protocol.TemperatureControlerMid;
import a8k.app.service.setting.AppSettingsMgrService;
import a8k.app.service.statemgr.AppFlagStateMgr;
import a8k.app.service.statemgr.GStateMgrService;
import a8k.app.service.statemgr.OptScanModuleStateMgr;
@ -33,6 +34,7 @@ public class TemperatureSyncService {
private final GStateMgrService gStateMgrService;
private final WaterTemperatureControllerDriver waterTemperatureControllerDriver;
private final A8kCanBusBaseDriver canBus;
private final AppSettingsMgrService appSettingsMgrService;
List<TemperatureRecordPoint> incubateBoxTemperatureCurve = new ArrayList<>();
@ -104,24 +106,32 @@ public class TemperatureSyncService {
}
try {
Double incubateBoxTemp = waterTemperatureControllerDriver.readTemperature(TemperatureControlerMid.IncubatorTCM);
gStateMgrService.updateIncubateBoxTemperature((int) (incubateBoxTemp + 0.5));
Double incubateBoxTemp = waterTemperatureControllerDriver.readTemperature(TemperatureControlerMid.IncubatorTCM);
double incubateBoxTempTarget = (double) appSettingsMgrService.getDeviceSetting().getIncubateBoxTemperature();
gStateMgrService.updateIncubateBoxTemperature((int) (incubateBoxTemp + 0.5), isTempReady(incubateBoxTemp, incubateBoxTempTarget));
addIncubateBoxTemperatureCurve(incubateBoxTemp);
} catch (AppException e) {
addIncubateBoxTemperatureCurve(0.0);
gStateMgrService.updateIncubateBoxTemperature(0);
gStateMgrService.updateIncubateBoxTemperature(0, false);
log.warn("Failed to read incubate box temperature: {}", e.getMessage());
}
try {
Double pbtemp = waterTemperatureControllerDriver.readTemperature(TemperatureControlerMid.PlatesBoxTCM);
gStateMgrService.updatePboxTemperature((int) (pbtemp + 0.5));
addPlateBoxTemperatureCurve(pbtemp);
Double pbtemp = waterTemperatureControllerDriver.readTemperature(TemperatureControlerMid.PlatesBoxTCM);
double pbtempTarget = (double) appSettingsMgrService.getDeviceSetting().getPlateBoxTemperature();
gStateMgrService.updatePboxTemperature((int) (pbtemp + 0.5), isTempReady(pbtemp, pbtempTarget));
} catch (AppException e) {
addPlateBoxTemperatureCurve(0.0);
gStateMgrService.updatePboxTemperature(0);
gStateMgrService.updatePboxTemperature(0, false);
log.warn("Failed to read plate box temperature: {}", e.getMessage());
}
}
private boolean isTempReady(double nowtemp, double targettemp) {
//TODO:改成可配置
if (Math.abs(nowtemp - targettemp) < 1) {
return true;
}
return false;
}
}

6
src/main/java/a8k/app/service/lowerctrl/TurntableMoveCtrlService.java

@ -128,15 +128,15 @@ public class TurntableMoveCtrlService {
}
public void trunableMoveToPushPos(IncubatorPos index) throws AppException {
trunableMoveTo(turntablePosParamMgr.getPushPos0() - index.off * turntablePosParamMgr.getPosSpacing());
trunableMoveTo(turntablePosParamMgr.getPushPos0() + index.off * turntablePosParamMgr.getPosSpacing());
}
public void trunableMoveToPullPos(IncubatorPos index) throws AppException {
trunableMoveTo(turntablePosParamMgr.getPullPos0() - index.off * turntablePosParamMgr.getPosSpacing());
trunableMoveTo(turntablePosParamMgr.getPullPos0() + index.off * turntablePosParamMgr.getPosSpacing());
}
public void trunableMoveToDropLiquidPos(IncubatorPos index) throws AppException {
trunableMoveTo(turntablePosParamMgr.getDropLiquidPos0() - index.off * turntablePosParamMgr.getPosSpacing());
trunableMoveTo(turntablePosParamMgr.getDropLiquidPos0() + index.off * turntablePosParamMgr.getPosSpacing());
}

8
src/main/java/a8k/app/service/statemgr/GStateMgrService.java

@ -20,7 +20,7 @@ import org.springframework.stereotype.Component;
@Slf4j
@RequiredArgsConstructor
public class GStateMgrService {
private final GState gState;
private final GState gState;
private final DeviceVirtualStateMgrService deviceVirtualStateMgrService;
@ -44,12 +44,14 @@ public class GStateMgrService {
return this.gState.sensorState;
}
public void updatePboxTemperature(Integer val) {
public void updatePboxTemperature(Integer val, Boolean isReady) {
gState.sensorState.setPboxTemperature(val);
gState.sensorState.setPboxTemperatureReady(isReady);
}
public void updateIncubateBoxTemperature(Integer val) {
public void updateIncubateBoxTemperature(Integer val, Boolean isReady) {
gState.sensorState.setIncubateBoxTemperature(val);
gState.sensorState.setIncubateBoxTemperatureReady(isReady);
}
public void updateWasteBinFullFlag(Boolean val) {

7
src/main/java/a8k/app/service/virtualstate/DeviceVirtualStateMgrService.java

@ -166,11 +166,18 @@ public class DeviceVirtualStateMgrService {
return gridGroup;
}
int cnt = 0;
public SensorState getVirtualSensorState() {
SensorState sensorState = new SensorState();
sensorState.setPboxTemperature(24);
sensorState.setIncubateBoxTemperature(25);
sensorState.setWasteBinFullFlag(false);
cnt++;
sensorState.setIncubateBoxTemperatureReady(cnt % 2 == 0); //每次调用切换一次状态
sensorState.setPboxTemperatureReady(cnt % 2 == 0); //每次调用切换一次状态
return sensorState;
}

27
src/main/java/a8k/app/type/a8k/state/SensorState.java

@ -5,11 +5,16 @@ import io.swagger.v3.oas.annotations.media.Schema;
public class SensorState {
@Schema(description = "板夹仓温度")
Integer pboxTemperature = 25;
Integer pboxTemperature = 25;
@Schema(description = "孵育盒温度")
Integer incubateBoxTemperature = 25;
Integer incubateBoxTemperature = 25;
@Schema(description = "废液桶满标志")
Boolean wasteBinFullFlag = false;
Boolean wasteBinFullFlag = false;
@Schema(description = "板夹仓温度是否就绪")
Boolean pboxTemperatureReady = false;
@Schema(description = "孵育盒温度是否就绪")
Boolean incubateBoxTemperatureReady = false;
public synchronized Integer getPboxTemperature() {
return pboxTemperature;
@ -19,6 +24,22 @@ public class SensorState {
this.pboxTemperature = pboxTemperature;
}
public synchronized Boolean getPboxTemperatureReady() {
return pboxTemperatureReady;
}
public synchronized void setPboxTemperatureReady(Boolean pboxTemperatureReady) {
this.pboxTemperatureReady = pboxTemperatureReady;
}
public synchronized Boolean getIncubateBoxTemperatureReady() {
return incubateBoxTemperatureReady;
}
public synchronized void setIncubateBoxTemperatureReady(Boolean incubateBoxTemperatureReady) {
this.incubateBoxTemperatureReady = incubateBoxTemperatureReady;
}
public synchronized Integer getIncubateBoxTemperature() {
return incubateBoxTemperature;
}

22
src/main/java/a8k/extui/page/test/verification/P31ReactionPlatesTransmitPosVerificationPage.java

@ -44,11 +44,11 @@ public class P31ReactionPlatesTransmitPosVerificationPage {
//光学模组单步
public void trunableMoveToPushPos(ConsumableGroup group,IncubatorPos index) throws AppException {
public void pushPlateQuick(ConsumableGroup group,IncubatorPos index) throws AppException {
plateBoxCtrlService.pushPlateQuick(group, index);
}
public void trunableMoveToPullPos(IncubatorPos index) throws AppException {
public void pullPlate(IncubatorPos index) throws AppException {
optScanModuleLowerCtrlService.pullPlate(index);
}
@ -56,10 +56,18 @@ public class P31ReactionPlatesTransmitPosVerificationPage {
optScanModuleLowerCtrlService.dropPlate();
}
public void trunableMoveToDropLiquidPos(IncubatorPos index) throws AppException {
public void turntableMoveToDropLiquidPos(IncubatorPos index) throws AppException {
turntableMoveCtrlService.trunableMoveToDropLiquidPos(index);
}
public void turntableMoveToPullPos(IncubatorPos index) throws AppException {
turntableMoveCtrlService.trunableMoveToPullPos(index);
}
public void turntableMoveToPushPos(IncubatorPos index) throws AppException {
turntableMoveCtrlService.trunableMoveToPushPos(index);
}
public void pushOneAndRemove(ConsumableGroup PBCh, IncubatorPos incubatorPos) throws AppException {
plateBoxCtrlService.pushPlateQuick(PBCh, incubatorPos);
@ -99,10 +107,12 @@ public class P31ReactionPlatesTransmitPosVerificationPage {
public void init() {
var page = extApiPageMgr.newPage(this);
page.newGroup("单步测试");
page.addFunction("推入", this::trunableMoveToPushPos);
page.addFunction("拉出", this::trunableMoveToPullPos);
page.addFunction("推入", this::pushPlateQuick);
page.addFunction("拉出", this::pullPlate);
page.addFunction("丢弃", this::dropPlate);
page.addFunction("移动到滴液位置", this::trunableMoveToDropLiquidPos);
page.addFunction("转盘-移动到滴液位置", this::turntableMoveToDropLiquidPos);
page.addFunction("转盘-移动到拉出位置", this::turntableMoveToPullPos);
page.addFunction("转盘-移动到推入位置", this::turntableMoveToPushPos);
page.newGroup("反应板夹仓-脚本测试");
page.addFunction("推入&&推出(One)", this::pushOneAndRemove);

Loading…
Cancel
Save