From 911542258638eca97d864c27b2f303fd45bf9374 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 23 Jan 2025 00:14:01 +0800 Subject: [PATCH] update --- .../initializer/A8kModParamInitializer.java | 16 +- .../java/a8k/app/i18n/Internationalization.java | 2 +- .../background/BackgroudProcessCtrlService.java | 17 -- .../background/SensorDataUpdateService.java | 53 +++-- .../service/background/TemperatureCtrlService.java | 264 +++++++++++++-------- .../service/lowerctrl/DeviceInitCtrlService.java | 1 - .../mainflowctrl/MainFlowCtrlScheduler.java | 31 ++- .../processer/MainFlowStateChangeProcesser.java | 19 +- .../debug/P00MainflowCtrlServiceDebugPage.java | 1 - .../page/extapp/P02A8kTemperaturaVerfication.java | 17 +- .../extui/page/init/BackgroudProcessCtrlPage.java | 28 --- .../java/a8k/extui/page/init/DeviceInitPage.java | 12 - 12 files changed, 254 insertions(+), 207 deletions(-) delete mode 100644 src/main/java/a8k/extui/page/init/BackgroudProcessCtrlPage.java diff --git a/src/main/java/a8k/app/hardware/initializer/A8kModParamInitializer.java b/src/main/java/a8k/app/hardware/initializer/A8kModParamInitializer.java index e0d6fc6..6ad9cac 100644 --- a/src/main/java/a8k/app/hardware/initializer/A8kModParamInitializer.java +++ b/src/main/java/a8k/app/hardware/initializer/A8kModParamInitializer.java @@ -134,6 +134,11 @@ public class A8kModParamInitializer { } + public void stopHeating() throws AppException { + canBus.moduleStop(MId.IncubatorTCM); + canBus.moduleStop(MId.PlatesBoxTCM); + } + public void stopAllMotor() throws AppException { //StopAllMotor //进出料初始化 @@ -225,9 +230,19 @@ public class A8kModParamInitializer { pipetteCtrlDriver.zMotorEnable(0); } + + public void forceDisableAllMotor() { + try { + stopAllMotor(); + } catch (AppException e) { + logger.error("forceDisableAllMotor fail......", e); + } + } + public void forceInitA8kModParams() { try { logger.info("forceInitA8kModParams"); + stopHeating(); stopAllMotor(); initA8kModParams(); } catch (AppException e) { @@ -240,7 +255,6 @@ public class A8kModParamInitializer { Boolean isInit = false; public void onAppEvent(AppEvent event) { - if (event instanceof A8kCanBusOnConnectEvent) { if (isInit) { return; diff --git a/src/main/java/a8k/app/i18n/Internationalization.java b/src/main/java/a8k/app/i18n/Internationalization.java index 886f3ab..3e7793e 100644 --- a/src/main/java/a8k/app/i18n/Internationalization.java +++ b/src/main/java/a8k/app/i18n/Internationalization.java @@ -18,7 +18,7 @@ public class Internationalization { case APPE_TUBE_HOLDER_SETTING_IS_LOCKED -> "试管架设置被锁定,已锁定的."; case APPE_EMERGENCY_SAMPLE_IS_PROCESSING -> "添加急诊样本失败,急诊样本还没有处理完成"; case APPE_ADD_EMERGENCY_ACTION_IS_NOT_ALLOWED_WHEN_WORKING -> "添加急诊样本失败,设备正在运行中"; - case APPE_DEVICE_IS_IN_FATAL_ERROR -> "设备处于严重错误,请关机后重启设备进行恢复"; + case APPE_DEVICE_IS_IN_FATAL_ERROR -> "设备处于严重错误,请重新初始化后再启动"; case APPE_SCAN_TUBEHOLDER_TYPE_TIMEOUT -> "扫描试管架类型超时"; case APPE_TUBE_HOLDER_TYPE_IS_NOT_SUPPORT -> "试管架类型不支持"; case APPE_INFEED_OVERTIME_FAIL -> "入料超时失败"; diff --git a/src/main/java/a8k/app/service/background/BackgroudProcessCtrlService.java b/src/main/java/a8k/app/service/background/BackgroudProcessCtrlService.java index 8b0868d..64c116f 100644 --- a/src/main/java/a8k/app/service/background/BackgroudProcessCtrlService.java +++ b/src/main/java/a8k/app/service/background/BackgroudProcessCtrlService.java @@ -6,22 +6,5 @@ import org.springframework.stereotype.Component; @Component public class BackgroudProcessCtrlService { - @Resource - TemperatureCtrlService temperatureCtrlService; - @Resource - SensorDataUpdateService sensorDataUpdateService; - synchronized public void startProcess() throws AppException { - temperatureCtrlService.startTemperatureControl(); - sensorDataUpdateService.startUpdate(); - } - - synchronized public void stopProcess() throws AppException { - temperatureCtrlService.stopTemperatureControl(); - sensorDataUpdateService.stopUpdate(); - } - - synchronized public boolean getProcessState() { - return temperatureCtrlService.isTemperatureControlRunning() && sensorDataUpdateService.isUpdateRunning(); - } } diff --git a/src/main/java/a8k/app/service/background/SensorDataUpdateService.java b/src/main/java/a8k/app/service/background/SensorDataUpdateService.java index 448525e..3a5ddc0 100644 --- a/src/main/java/a8k/app/service/background/SensorDataUpdateService.java +++ b/src/main/java/a8k/app/service/background/SensorDataUpdateService.java @@ -2,8 +2,10 @@ package a8k.app.service.background; import a8k.OS; import a8k.app.a8ktype.DeviceRunMode; +import a8k.app.a8ktype.error.AppError; import a8k.app.hardware.basedriver.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.IOId; +import a8k.app.service.bases.AppEventBusService; import a8k.app.service.statemgr.GStateMgrService; import a8k.app.service.statemgr.OptScanModuleStateMgrService; import a8k.app.a8ktype.state.enumtype.OptScanModuleState; @@ -36,14 +38,35 @@ public class SensorDataUpdateService { OptScanModuleStateMgrService optScanModuleStateMgrService; @Resource + AppEventBusService appEventBusService; + + @Resource A8kCanBusService canBus; - Thread updateThread = null; - Boolean workingFlag = false; + Thread updateThread = null; + Boolean workingFlag = true; + Boolean errorFlag = false; + AppError error = null; List incubateBoxTemperatureCurve = new ArrayList<>(); List plateBoxTemperatureCurve = new ArrayList<>(); + public void setErrorFlag(AppException e) { + if (!errorFlag) { + appEventBusService.pushAppExceptionEvent(e); + } + errorFlag = true; + error = e.getError(); + } + + public AppError getSensorDataUpdateServiceError() { + return error; + } + + public void clearError() { + errorFlag = false; + error = null; + } synchronized private void addIncubateBoxTemperatureCurve(Double temperature) { TemperatureRecordPoint point = new TemperatureRecordPoint(); @@ -74,25 +97,11 @@ public class SensorDataUpdateService { return new ArrayList<>(plateBoxTemperatureCurve); } - public Boolean isUpdateRunning() { - return workingFlag; - } - - public void startUpdate() { - workingFlag = true; - - - } - - public void stopUpdate() { - workingFlag = false; - } - @PostConstruct public void init() { updateThread = new Thread(() -> { - OS.forceSleep(3000); + OS.forceSleep(3000); //等待webSocket连接 while (true) { if (!workingFlag) { @@ -105,8 +114,8 @@ public class SensorDataUpdateService { continue; } - try { + try { OptScanModuleState optScanModuleState = optScanModuleStateMgrService.getOptScanModule().getState(); if (!optScanModuleState.equals(OptScanModuleState.EMPTY)) { gStateMgrService.getSensorState().setWasteBinFullFlag(false); @@ -130,10 +139,16 @@ public class SensorDataUpdateService { addPlateBoxTemperatureCurve(pbtemp); log.debug("IncubateBoxTemperature: {}, PlateBoxTemperature: {}", incubateBoxTemp, pbtemp); + clearError(); } catch (AppException e) { log.error("Failed to read temperature data {}", e.getMessage()); + setErrorFlag(e); + } + if (errorFlag) { + OS.forceSleep(5000); + } else { + OS.forceSleep(1000); } - OS.forceSleep(1000); } }); updateThread.start(); diff --git a/src/main/java/a8k/app/service/background/TemperatureCtrlService.java b/src/main/java/a8k/app/service/background/TemperatureCtrlService.java index a454548..1a00c48 100644 --- a/src/main/java/a8k/app/service/background/TemperatureCtrlService.java +++ b/src/main/java/a8k/app/service/background/TemperatureCtrlService.java @@ -2,10 +2,12 @@ package a8k.app.service.background; import a8k.OS; +import a8k.app.a8ktype.error.AppError; +import a8k.app.a8ktype.exception.AppException; +import a8k.app.service.bases.AppEventBusService; import a8k.app.service.setting.AppSettingsMgrService; import a8k.app.hardware.driver.TemperatureControlDriver; import a8k.teststate.VirtualDevice; -import a8k.app.a8ktype.exception.AppException; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; @@ -15,130 +17,202 @@ import org.springframework.stereotype.Component; @Slf4j public class TemperatureCtrlService { - enum TemperaControlMode { - kFixTemperature, - kAutoChangeFromAppSetting - } - - @Resource TemperatureControlDriver temperatureControlDriver; @Resource VirtualDevice virtualDevice; - @Resource - AppSettingsMgrService appSettingsMgrService; - - Integer targetTemperature = 0; - TemperaControlMode controlMode = TemperaControlMode.kFixTemperature; - Thread temperatureCtrlThread = null; - Boolean workingFlag = false; - + AppSettingsMgrService appSettingsMgrService; + @Resource + AppEventBusService eventBus; - @PostConstruct - public void init() { - // eventBus.regListener(this::onAppEvent); - } - synchronized public Integer getTargetTemperature() { - return targetTemperature; - } + Integer targetTemperatureSetVal = null; + Integer targetTemperature = 0; + Boolean workingFlag = false; - /** - * 控制温度,当APP配置发生变化时,自动调整温度 - * @throws AppException 温度控制异常 - */ - synchronized public void startTemperatureControl() throws AppException { - stopTemperatureControl(); - controlMode = TemperaControlMode.kAutoChangeFromAppSetting; - targetTemperature = 0; - startTemperatureControlInternal(); - } + Thread temperatureCtrlThread = null; - /** - * 控制温度,根据设定值控制温度 - * @param tem 设定温度 - * @throws AppException 温度控制异常 - */ - synchronized public void startFixTemperatureControl(Integer tem) throws AppException { - stopTemperatureControl(); - controlMode = TemperaControlMode.kFixTemperature; - targetTemperature = tem; - startTemperatureControlInternal(); - } + AppError error = null; - synchronized public boolean isTemperatureControlRunning() { - return temperatureCtrlThread != null; - } + @PostConstruct + public void init() { + // eventBus.regListener(this::onAppEvent); - synchronized public void startTemperatureControlInternal() throws AppException { - if (virtualDevice.isEnable()) { - return; - } + temperatureCtrlThread = new Thread(() -> { + OS.forceSleep(3000); //等待webSocket连接 - if (temperatureCtrlThread != null) { - return; - } + while (true) { + if (virtualDevice.isEnable()) { + OS.forceSleep(1000); + continue; + } - if (controlMode.equals(TemperaControlMode.kAutoChangeFromAppSetting)) { - var setting = appSettingsMgrService.getDeviceSetting(); - targetTemperature = setting.getTemperature(); - } - temperatureControlDriver.startCtrlTemperature(targetTemperature.doubleValue()); - /* - * 启动线程,定时检查温度设定值,如果发生变化则调用温度控制器 - */ - workingFlag = true; - temperatureCtrlThread = new Thread(() -> { - log.info("Temperature thread run start"); - while (workingFlag) { try { - - OS.forceSleep(1000); - if (controlMode.equals(TemperaControlMode.kAutoChangeFromAppSetting)) { - Integer settingTem = appSettingsMgrService.getDeviceSetting().getTemperature(); - if (!targetTemperature.equals(settingTem)) { - targetTemperature = settingTem; - temperatureControlDriver.startCtrlTemperature(targetTemperature.doubleValue()); - } + Integer targetSetVal = getTargetTemperatureSetVal(); + if (isTargetTemperatureChanged(targetSetVal)) { + startCtrlTemperature(targetSetVal); } - + clearAppError(); } catch (AppException e) { + setAppError(e); log.error("Temperature control error: {}", e.getMessage()); } } - try { - temperatureControlDriver.stopCtrlTemperature(); - } catch (AppException e) { - throw new RuntimeException(e); - } - - log.info("Temperature thread run end"); }); temperatureCtrlThread.start(); - temperatureCtrlThread.setName("TemperatureCtrlThread"); } - synchronized public void stopTemperatureControl() throws AppException { - if (virtualDevice.isEnable()) { - return; + + synchronized public AppError getError() { + return error; + } + + synchronized public void setTargetTemperature(Integer temperature) { + targetTemperatureSetVal = temperature; + } + + synchronized public void clearTargetTemperature() { + targetTemperatureSetVal = null; + } + synchronized public Integer getTargetTemperature() { + return targetTemperature; + } + + + private Boolean isTargetTemperatureChanged(Integer newTargetTemperature) { + return !newTargetTemperature.equals(targetTemperature); + } + + private Integer getTargetTemperatureSetVal() { + if (targetTemperatureSetVal != null) { + return targetTemperatureSetVal; } + return appSettingsMgrService.getDeviceSetting().getTemperature(); + } - if (temperatureCtrlThread != null) { - temperatureCtrlThread.interrupt(); - workingFlag = false; - try { - temperatureCtrlThread.join(); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - temperatureCtrlThread = null; + private void startCtrlTemperature(Integer temperature) throws AppException { + temperatureControlDriver.startCtrlTemperature(temperature.doubleValue()); + targetTemperature = temperature; + workingFlag = true; + } + + synchronized private void setAppError(AppException e) { + if (error == null) { + eventBus.pushAppExceptionEvent(e); } - log.info("Temperature control stopped"); + error = e.getError(); } + synchronized private void clearAppError() { + error = null; + } + + // + // synchronized public Integer getTargetTemperature() { + // return targetTemperature; + // } + // + // /** + // * 控制温度,当APP配置发生变化时,自动调整温度 + // * @throws AppException 温度控制异常 + // */ + // synchronized public void startTemperatureControl() throws AppException { + // stopTemperatureControl(); + // targetTemperature = 0; + // startTemperatureControlInternal(); + // } + // + // /** + // * 控制温度,根据设定值控制温度 + // * @param tem 设定温度 + // * @throws AppException 温度控制异常 + // */ + // synchronized public void startFixTemperatureControl(Integer tem) throws AppException { + // stopTemperatureControl(); + // targetTemperature = tem; + // startTemperatureControlInternal(); + // } + // + // synchronized public boolean isTemperatureControlRunning() { + // return temperatureCtrlThread != null; + // } + // + // + // synchronized public void startTemperatureControlInternal() throws AppException { + // if (virtualDevice.isEnable()) { + // return; + // } + // + // if (temperatureCtrlThread != null) { + // return; + // } + // + // if (controlMode.equals(TemperaControlMode.kAutoChangeFromAppSetting)) { + // var setting = appSettingsMgrService.getDeviceSetting(); + // targetTemperature = setting.getTemperature(); + // } + // + // + // /* + // * 启动线程,定时检查温度设定值,如果发生变化则调用温度控制器 + // */ + // workingFlag = true; + // temperatureCtrlThread = new Thread(() -> { + // log.info("Temperature thread run start"); + // + // temperatureControlDriver.startCtrlTemperature(targetTemperature.doubleValue()); + // + // while (workingFlag) { + // try { + // + // OS.forceSleep(1000); + // if (controlMode.equals(TemperaControlMode.kAutoChangeFromAppSetting)) { + // Integer settingTem = appSettingsMgrService.getDeviceSetting().getTemperature(); + // if (!targetTemperature.equals(settingTem)) { + // targetTemperature = settingTem; + // temperatureControlDriver.startCtrlTemperature(targetTemperature.doubleValue()); + // } + // } + // + // } catch (AppException e) { + // log.error("Temperature control error: {}", e.getMessage()); + // } + // } + // + // try { + // temperatureControlDriver.stopCtrlTemperature(); + // } catch (AppException e) { + // throw new RuntimeException(e); + // } + // + // log.info("Temperature thread run end"); + // }); + // temperatureCtrlThread.start(); + // temperatureCtrlThread.setName("TemperatureCtrlThread"); + // } + // + // synchronized public void stopTemperatureControl() throws AppException { + // if (virtualDevice.isEnable()) { + // return; + // } + // + // if (temperatureCtrlThread != null) { + // temperatureCtrlThread.interrupt(); + // workingFlag = false; + // try { + // temperatureCtrlThread.join(); + // } catch (InterruptedException e) { + // throw new RuntimeException(e); + // } + // temperatureCtrlThread = null; + // } + // log.info("Temperature control stopped"); + // + // } + } diff --git a/src/main/java/a8k/app/service/lowerctrl/DeviceInitCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/DeviceInitCtrlService.java index aa5ead2..9acb7bb 100644 --- a/src/main/java/a8k/app/service/lowerctrl/DeviceInitCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/DeviceInitCtrlService.java @@ -269,7 +269,6 @@ public class DeviceInitCtrlService { throw AppException.of(A8kEcode.APPE_DEVICE_INIT_CHECK_FAIL); } } - backgroudProcessCtrlService.startProcess(); deviceInitedTaskState.passed = true; deviceInitedTaskState.deviceInited = true; deviceInitedTaskState.promopt = ZAppPromoptFactory.buildNotifyPromopt("设备初始化成功"); diff --git a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlScheduler.java b/src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlScheduler.java index fce8daf..1bc4cfe 100644 --- a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlScheduler.java +++ b/src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlScheduler.java @@ -12,9 +12,11 @@ import a8k.app.a8ktype.exception.AppException; import a8k.app.a8ktype.state.DeviceWorkState; import a8k.app.a8ktype.state.enumtype.A8kWorkState; import a8k.app.factory.ZAppPromoptFactory; +import a8k.app.hardware.initializer.A8kModParamInitializer; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; import a8k.app.service.bases.AppEventBusService; import a8k.app.service.bases.UIMessage; +import a8k.app.service.lowerctrl.DeviceInitCtrlService; import a8k.app.service.lowerctrl.LiquidOperationCtrlService; import a8k.app.service.mainctrl.TubeHolderSettingMgrService; import a8k.app.service.mainctrl.mainflowctrl.base.*; @@ -40,6 +42,10 @@ public class MainFlowCtrlScheduler implements ApplicationListener onIDLE(); - case WORKING -> onWorking(); - case PAUSE -> onPause(); + case IDLE -> { + onIDLE(); + } + case WORKING -> { + onWorking(); + } + case PAUSE -> { + onPause(); + } } onPostProcessing(); diff --git a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/processer/MainFlowStateChangeProcesser.java b/src/main/java/a8k/app/service/mainctrl/mainflowctrl/processer/MainFlowStateChangeProcesser.java index 119904b..f45fbaf 100644 --- a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/processer/MainFlowStateChangeProcesser.java +++ b/src/main/java/a8k/app/service/mainctrl/mainflowctrl/processer/MainFlowStateChangeProcesser.java @@ -3,10 +3,7 @@ package a8k.app.service.mainctrl.mainflowctrl.processer; import a8k.app.service.mainctrl.TubeHolderSettingMgrService; import a8k.app.service.mainctrl.mainflowctrl.base.IMainFlowStateChangeProcesser; import a8k.app.service.mainctrl.mainflowctrl.base.MainFlowProcesser; -import a8k.app.service.statemgr.ConsumablesMgrService; -import a8k.app.service.statemgr.IncubationPlateStateMgrService; -import a8k.app.service.statemgr.ProjectContextMgrService; -import a8k.app.service.statemgr.TubeStateMgrService; +import a8k.app.service.statemgr.*; import a8k.app.a8ktype.state.IncubationSubTank; import a8k.app.a8ktype.state.enumtype.IncubationSubTankState; import a8k.app.service.lowerctrl.HbotMoveExCtrlService; @@ -16,6 +13,7 @@ import a8k.teststate.VirtualDevice; import a8k.app.a8ktype.exception.AppException; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -35,12 +33,14 @@ public class MainFlowStateChangeProcesser implements IMainFlowStateChangeProcess @Resource IncubationPlateStateMgrService incubationPlateStateMgrService; @Resource - TubeStateMgrService tubeStateMgrService; + TubeStateMgrService tubeStateMgrService; @Resource - ConsumablesMgrService consumablesMgrService; + ConsumablesMgrService consumablesMgrService; @Resource ProjectContextMgrService projectContextMgrService; + @Autowired + private DeviceWorkStateMgrService deviceWorkStateMgrService; void ejectAllPlates() throws AppException { var tanks = incubationPlateStateMgrService.get().subtanks; @@ -72,7 +72,10 @@ public class MainFlowStateChangeProcesser implements IMainFlowStateChangeProcess @Override public void onStop() throws AppException { //物理清空设备 - doClearDevice(); + if (!deviceWorkStateMgrService.getDeviceWorkState().fatalErrorFlag) { + //如果发生了致命错误,不执行物理操作 + doClearDevice(); + } //清空孵育盘状态 incubationPlateStateMgrService.resetAll(); //清空试管状态 @@ -93,6 +96,6 @@ public class MainFlowStateChangeProcesser implements IMainFlowStateChangeProcess @Override public void onStart() throws AppException { - + } } diff --git a/src/main/java/a8k/extui/page/debug/P00MainflowCtrlServiceDebugPage.java b/src/main/java/a8k/extui/page/debug/P00MainflowCtrlServiceDebugPage.java index b52330c..37a42c9 100644 --- a/src/main/java/a8k/extui/page/debug/P00MainflowCtrlServiceDebugPage.java +++ b/src/main/java/a8k/extui/page/debug/P00MainflowCtrlServiceDebugPage.java @@ -54,7 +54,6 @@ public class P00MainflowCtrlServiceDebugPage { @ExtApiStatu(name = "", group = "其他状态", order = 4) public Map getBackgroudProcessState() { return Map.of( - "后台线程工作状态", backgroudProcessCtrlService.getProcessState(), "目标温度", temperatureCtrlService.getTargetTemperature(), "孵育盘实时温度", gStateMgrService.getSensorState().getIncubateBoxTemperature(), "板夹仓实时温度", gStateMgrService.getSensorState().getPboxTemperature(), diff --git a/src/main/java/a8k/extui/page/extapp/P02A8kTemperaturaVerfication.java b/src/main/java/a8k/extui/page/extapp/P02A8kTemperaturaVerfication.java index fffea79..2169340 100644 --- a/src/main/java/a8k/extui/page/extapp/P02A8kTemperaturaVerfication.java +++ b/src/main/java/a8k/extui/page/extapp/P02A8kTemperaturaVerfication.java @@ -30,13 +30,11 @@ public class P02A8kTemperaturaVerfication { ExtApiPageMgr extApiPageMgr; @Resource - TemperatureCtrlService temperatureCtrlService; + TemperatureCtrlService temperatureCtrlService; @Resource - TemperatureControlDriver temperatureControlDriver; + TemperatureControlDriver temperatureControlDriver; @Resource - TemperatureCtrlParamMgr temperatureCtrlParamMgr; - @Resource - BackgroudProcessCtrlService backgroudProcessCtrlService; + TemperatureCtrlParamMgr temperatureCtrlParamMgr; List incubateBoxTemperatureCurve = new ArrayList<>(); @@ -66,7 +64,7 @@ public class P02A8kTemperaturaVerfication { int S = hasStartedTimeMS / 1000; return String.format("%s:%s:%s", (int) Math.floor((double) S / 3600), (int) Math.floor((double) (S % 3600) / 60), S % 60); } - + @PostConstruct public void init() throws NoSuchMethodException { @@ -103,10 +101,7 @@ public class P02A8kTemperaturaVerfication { synchronized public void startCtrl(Integer targetTemperature) throws AppException, InterruptedException { - backgroudProcessCtrlService.stopProcess(); - - temperatureCtrlService.stopTemperatureControl(); - temperatureCtrlService.startFixTemperatureControl(targetTemperature); + temperatureCtrlService.setTargetTemperature(targetTemperature); if (tempSampleThread != null) { tempSampleThread.interrupt(); tempSampleThread.join(); @@ -135,7 +130,7 @@ public class P02A8kTemperaturaVerfication { } synchronized public void stopCtrl() throws AppException, InterruptedException { - temperatureCtrlService.stopTemperatureControl(); + temperatureCtrlService.clearTargetTemperature(); if (tempSampleThread != null) { tempSampleThread.interrupt(); tempSampleThread.join(); diff --git a/src/main/java/a8k/extui/page/init/BackgroudProcessCtrlPage.java b/src/main/java/a8k/extui/page/init/BackgroudProcessCtrlPage.java deleted file mode 100644 index b374af5..0000000 --- a/src/main/java/a8k/extui/page/init/BackgroudProcessCtrlPage.java +++ /dev/null @@ -1,28 +0,0 @@ -package a8k.extui.page.init; - -import a8k.app.service.background.BackgroudProcessCtrlService; -import a8k.extui.mgr.ExtApiPageMgr; -import a8k.extui.type.ExtUIPageCfg; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Component; - -@Component -public class BackgroudProcessCtrlPage { - - @Resource - ExtApiPageMgr extApiPageMgr; - - @Resource - BackgroudProcessCtrlService backgroudProcessCtrlService; - - @PostConstruct - void init() { - ExtUIPageCfg page = new ExtUIPageCfg(backgroudProcessCtrlService); - - page.addFunction("启动后台进程", backgroudProcessCtrlService::startProcess); - page.addFunction("停止后台进程", backgroudProcessCtrlService::stopProcess); - - extApiPageMgr.addPage(page); - } -} diff --git a/src/main/java/a8k/extui/page/init/DeviceInitPage.java b/src/main/java/a8k/extui/page/init/DeviceInitPage.java index d05d305..7548f4c 100644 --- a/src/main/java/a8k/extui/page/init/DeviceInitPage.java +++ b/src/main/java/a8k/extui/page/init/DeviceInitPage.java @@ -84,16 +84,6 @@ public class DeviceInitPage { } - @Resource - BackgroudProcessCtrlService backgroudProcessCtrlService; - - public void startTemperatureControl() throws AppException { - backgroudProcessCtrlService.startProcess(); - } - - public void stopTemperatureControl() throws AppException { - backgroudProcessCtrlService.stopProcess(); - } public List initializeDevice() throws AppException { var ret = deviceInitCtrlService.initDevice(); @@ -120,8 +110,6 @@ public class DeviceInitPage { page.newGroup("设备初始化"); page.addFunction("初始化设备", this::initializeDevice); - page.addFunction("开始控温", this::startTemperatureControl); - page.addFunction("停止控温", this::stopTemperatureControl); page.newGroup("电机使能"); page.addFunction("电机归零", this::moveAllStepMotorToZero);