From 69e93c6ba1f36a03accbeb9b9706abc50b6a3216 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sun, 27 Apr 2025 14:00:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=85=89=E5=AD=A6=E6=A8=A1?= =?UTF-8?q?=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../a8k/app/config/A8kSubModuleInitRegConfig.java | 41 ++++++++++--- ...quidAbsorptionAndDistributionTestControler.java | 8 +++ ...LiquidAbsorptionAndDistributionTestService.java | 61 +++++++++++-------- .../a8k/app/hardware/type/OptModuleRegIndex.java | 43 ++++++++++--- src/main/java/a8k/app/hardware/type/RegIndex.java | 52 +++++++++++++--- .../a8k/extui/page/driver/OptScannerCtrlPage.java | 63 ++++++++++++------- .../page/extapp/OptModuleParamCalibration.java | 70 +++++++++++++++------- 7 files changed, 240 insertions(+), 98 deletions(-) diff --git a/src/main/java/a8k/app/config/A8kSubModuleInitRegConfig.java b/src/main/java/a8k/app/config/A8kSubModuleInitRegConfig.java index 108b605..0fb4fe0 100644 --- a/src/main/java/a8k/app/config/A8kSubModuleInitRegConfig.java +++ b/src/main/java/a8k/app/config/A8kSubModuleInitRegConfig.java @@ -163,15 +163,38 @@ public class A8kSubModuleInitRegConfig { // addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_f_reverse_scan_pos_offset); addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_scan_step_interval); addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_scan_pointnum); - addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_scan_vdefault); - addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_scan_vstart); - addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_scan_a1); - addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_scan_amax); - addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_scan_v1); - addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_scan_dmax); - addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_scan_d1); - addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_scan_vstop); - addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_scan_tzerowait); + + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_f_scan_vdefault); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_f_scan_vstart); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_f_scan_a1); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_f_scan_amax); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_f_scan_v1); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_f_scan_dmax); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_f_scan_d1); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_f_scan_vstop); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_f_scan_tzerowait); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_f_scan_irun); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_t_scan_vdefault); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_t_scan_vstart); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_t_scan_a1); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_t_scan_amax); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_t_scan_v1); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_t_scan_dmax); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_t_scan_d1); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_t_scan_vstop); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_t_scan_tzerowait); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_t_scan_irun); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_barcode_scan_vdefault); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_barcode_scan_vstart); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_barcode_scan_a1); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_barcode_scan_amax); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_barcode_scan_v1); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_barcode_scan_dmax); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_barcode_scan_d1); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_barcode_scan_vstop); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_barcode_scan_tzerowait); + addRegMarker(ModuleType.A8kOptical, RegIndex.kreg_a8k_opt_barcode_scan_irun); + addRegMarker(ModuleType.MiniServo, RegIndex.kreg_mini_servo_limit_velocity); addRegMarker(ModuleType.MiniServo, RegIndex.kreg_mini_servo_limit_torque); diff --git a/src/main/java/a8k/app/controler/api/v1/engineer/LiquidAbsorptionAndDistributionTestControler.java b/src/main/java/a8k/app/controler/api/v1/engineer/LiquidAbsorptionAndDistributionTestControler.java index 6fc183a..4fc0931 100644 --- a/src/main/java/a8k/app/controler/api/v1/engineer/LiquidAbsorptionAndDistributionTestControler.java +++ b/src/main/java/a8k/app/controler/api/v1/engineer/LiquidAbsorptionAndDistributionTestControler.java @@ -2,6 +2,7 @@ package a8k.app.controler.api.v1.engineer; import a8k.app.engineer.service.qatest.LiquidAbsorptionAndDistributionTestService; +import a8k.app.hardware.type.A8kEcode; import a8k.app.type.exception.AppException; import a8k.app.type.ui.ApiRet; import io.swagger.v3.oas.annotations.Operation; @@ -30,9 +31,16 @@ public class LiquidAbsorptionAndDistributionTestControler { return ApiRet.success(); } + // static public class TestOnceRequestParam { + // public Integer ul; + // } + + @Operation(summary = "进行一次移液操作") @PostMapping("/testOnce") public ApiRet testOnce(Integer ul) throws AppException { + if (ul == null) + throw AppException.of(A8kEcode.CODEERROR, "ul不能为null"); liquidAbsorptionAndDistributionTestService.absorbAndDistribute(ul); return ApiRet.success(); } 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 ecf0a65..2d07b63 100644 --- a/src/main/java/a8k/app/engineer/service/qatest/LiquidAbsorptionAndDistributionTestService.java +++ b/src/main/java/a8k/app/engineer/service/qatest/LiquidAbsorptionAndDistributionTestService.java @@ -28,7 +28,7 @@ import org.springframework.stereotype.Component; @RequiredArgsConstructor public class LiquidAbsorptionAndDistributionTestService { public static class Config { - public Boolean takeTipEachTime; + public Boolean takeTipEachTime = false; } final private EngineerModeActionExecutor actionExecutor; @@ -57,9 +57,16 @@ public class LiquidAbsorptionAndDistributionTestService { * @param config 配置 */ synchronized public void submitConfig(Config config) { + if (config == null) { + log.error("配置错误"); + return; + } this.config = config; log.info("更新配置 "); log.info(" takeTipEachTime: {}", config.takeTipEachTime); + if (config.takeTipEachTime == null) { + config.takeTipEachTime = false; + } } /** @@ -68,31 +75,33 @@ public class LiquidAbsorptionAndDistributionTestService { * @throws AppException appE */ public void absorbAndDistribute(Integer ul) throws AppException { - /* - * 检查当前是否有其他项目正在进行测试 - */ - 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.txErrorMsg(log, e, "吸取分配液体失败"); - } - }); + 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); +// } +// }); } /** diff --git a/src/main/java/a8k/app/hardware/type/OptModuleRegIndex.java b/src/main/java/a8k/app/hardware/type/OptModuleRegIndex.java index 5369329..052cd96 100644 --- a/src/main/java/a8k/app/hardware/type/OptModuleRegIndex.java +++ b/src/main/java/a8k/app/hardware/type/OptModuleRegIndex.java @@ -8,15 +8,40 @@ public enum OptModuleRegIndex { kreg_a8k_opt_scan_step_interval(RegIndex.kreg_a8k_opt_scan_step_interval), kreg_a8k_opt_scan_pointnum(RegIndex.kreg_a8k_opt_scan_pointnum), - kreg_a8k_opt_scan_vdefault(RegIndex.kreg_a8k_opt_scan_vdefault), - kreg_a8k_opt_scan_vstart(RegIndex.kreg_a8k_opt_scan_vstart), - kreg_a8k_opt_scan_a1(RegIndex.kreg_a8k_opt_scan_a1), - kreg_a8k_opt_scan_amax(RegIndex.kreg_a8k_opt_scan_amax), - kreg_a8k_opt_scan_v1(RegIndex.kreg_a8k_opt_scan_v1), - kreg_a8k_opt_scan_dmax(RegIndex.kreg_a8k_opt_scan_dmax), - kreg_a8k_opt_scan_d1(RegIndex.kreg_a8k_opt_scan_d1), - kreg_a8k_opt_scan_vstop(RegIndex.kreg_a8k_opt_scan_vstop), - kreg_a8k_opt_scan_tzerowait(RegIndex.kreg_a8k_opt_scan_tzerowait), + kreg_a8k_opt_f_scan_vdefault(RegIndex.kreg_a8k_opt_f_scan_vdefault), // + kreg_a8k_opt_f_scan_vstart(RegIndex.kreg_a8k_opt_f_scan_vstart), // + kreg_a8k_opt_f_scan_a1(RegIndex.kreg_a8k_opt_f_scan_a1), // + kreg_a8k_opt_f_scan_amax(RegIndex.kreg_a8k_opt_f_scan_amax), // + kreg_a8k_opt_f_scan_v1(RegIndex.kreg_a8k_opt_f_scan_v1), // + kreg_a8k_opt_f_scan_dmax(RegIndex.kreg_a8k_opt_f_scan_dmax), // + kreg_a8k_opt_f_scan_d1(RegIndex.kreg_a8k_opt_f_scan_d1), // + kreg_a8k_opt_f_scan_vstop(RegIndex.kreg_a8k_opt_f_scan_vstop), // + kreg_a8k_opt_f_scan_tzerowait(RegIndex.kreg_a8k_opt_f_scan_tzerowait), // + kreg_a8k_opt_f_scan_irun(RegIndex.kreg_a8k_opt_f_scan_irun), // + + kreg_a8k_opt_t_scan_vdefault(RegIndex.kreg_a8k_opt_t_scan_vdefault), // + kreg_a8k_opt_t_scan_vstart(RegIndex.kreg_a8k_opt_t_scan_vstart), // + kreg_a8k_opt_t_scan_a1(RegIndex.kreg_a8k_opt_t_scan_a1), // + kreg_a8k_opt_t_scan_amax(RegIndex.kreg_a8k_opt_t_scan_amax), // + kreg_a8k_opt_t_scan_v1(RegIndex.kreg_a8k_opt_t_scan_v1), // + kreg_a8k_opt_t_scan_dmax(RegIndex.kreg_a8k_opt_t_scan_dmax), // + kreg_a8k_opt_t_scan_d1(RegIndex.kreg_a8k_opt_t_scan_d1), // + kreg_a8k_opt_t_scan_vstop(RegIndex.kreg_a8k_opt_t_scan_vstop), // + kreg_a8k_opt_t_scan_tzerowait(RegIndex.kreg_a8k_opt_t_scan_tzerowait), // + kreg_a8k_opt_t_scan_irun(RegIndex.kreg_a8k_opt_t_scan_irun), // + + kreg_a8k_opt_barcode_scan_vdefault(RegIndex.kreg_a8k_opt_barcode_scan_vdefault), // + kreg_a8k_opt_barcode_scan_vstart(RegIndex.kreg_a8k_opt_barcode_scan_vstart), // + kreg_a8k_opt_barcode_scan_a1(RegIndex.kreg_a8k_opt_barcode_scan_a1), // + kreg_a8k_opt_barcode_scan_amax(RegIndex.kreg_a8k_opt_barcode_scan_amax), // + kreg_a8k_opt_barcode_scan_v1(RegIndex.kreg_a8k_opt_barcode_scan_v1), // + kreg_a8k_opt_barcode_scan_dmax(RegIndex.kreg_a8k_opt_barcode_scan_dmax), // + kreg_a8k_opt_barcode_scan_d1(RegIndex.kreg_a8k_opt_barcode_scan_d1), // + kreg_a8k_opt_barcode_scan_vstop(RegIndex.kreg_a8k_opt_barcode_scan_vstop), // + kreg_a8k_opt_barcode_scan_tzerowait(RegIndex.kreg_a8k_opt_barcode_scan_tzerowait), // + kreg_a8k_opt_barcode_scan_irun(RegIndex.kreg_a8k_opt_barcode_scan_irun), // + + ; public final RegIndex regIndex; diff --git a/src/main/java/a8k/app/hardware/type/RegIndex.java b/src/main/java/a8k/app/hardware/type/RegIndex.java index d3b02c6..b92a339 100644 --- a/src/main/java/a8k/app/hardware/type/RegIndex.java +++ b/src/main/java/a8k/app/hardware/type/RegIndex.java @@ -89,15 +89,49 @@ public enum RegIndex { kreg_a8k_opt_f_reverse_scan_pos_offset(4504), // F光学逆向扫描,扫描起始位距离零点的偏移 kreg_a8k_opt_scan_step_interval(4505), // 参数固定:为1 kreg_a8k_opt_scan_pointnum(4506), // 参数固定:为1200个点 - kreg_a8k_opt_scan_vdefault(4520), - kreg_a8k_opt_scan_vstart(4521), - kreg_a8k_opt_scan_a1(4522), - kreg_a8k_opt_scan_amax(4523), - kreg_a8k_opt_scan_v1(4524), - kreg_a8k_opt_scan_dmax(4525), - kreg_a8k_opt_scan_d1(4526), - kreg_a8k_opt_scan_vstop(4527), - kreg_a8k_opt_scan_tzerowait(4528), + // kreg_a8k_opt_scan_vdefault(4520), + // kreg_a8k_opt_scan_vstart(4521), + // kreg_a8k_opt_scan_a1(4522), + // kreg_a8k_opt_scan_amax(4523), + // kreg_a8k_opt_scan_v1(4524), + // kreg_a8k_opt_scan_dmax(4525), + // kreg_a8k_opt_scan_d1(4526), + // kreg_a8k_opt_scan_vstop(4527), + // kreg_a8k_opt_scan_tzerowait(4528), + + kreg_a8k_opt_f_scan_vdefault(4600), // + kreg_a8k_opt_f_scan_vstart(4601), // + kreg_a8k_opt_f_scan_a1(4602), // + kreg_a8k_opt_f_scan_amax(4603), // + kreg_a8k_opt_f_scan_v1(4604), // + kreg_a8k_opt_f_scan_dmax(4605), // + kreg_a8k_opt_f_scan_d1(4606), // + kreg_a8k_opt_f_scan_vstop(4607), // + kreg_a8k_opt_f_scan_tzerowait(4608), // + kreg_a8k_opt_f_scan_irun(4609), // + + kreg_a8k_opt_t_scan_vdefault(4700), // + kreg_a8k_opt_t_scan_vstart(4701), // + kreg_a8k_opt_t_scan_a1(4702), // + kreg_a8k_opt_t_scan_amax(4703), // + kreg_a8k_opt_t_scan_v1(4704), // + kreg_a8k_opt_t_scan_dmax(4705), // + kreg_a8k_opt_t_scan_d1(4706), // + kreg_a8k_opt_t_scan_vstop(4707), // + kreg_a8k_opt_t_scan_tzerowait(4708), // + kreg_a8k_opt_t_scan_irun(4709), // + + kreg_a8k_opt_barcode_scan_vdefault(4800), // + kreg_a8k_opt_barcode_scan_vstart(4801), // + kreg_a8k_opt_barcode_scan_a1(4802), // + kreg_a8k_opt_barcode_scan_amax(4803), // + kreg_a8k_opt_barcode_scan_v1(4804), // + kreg_a8k_opt_barcode_scan_dmax(4805), // + kreg_a8k_opt_barcode_scan_d1(4806), // + kreg_a8k_opt_barcode_scan_vstop(4807), // + kreg_a8k_opt_barcode_scan_tzerowait(4808), // + kreg_a8k_opt_barcode_scan_irun(4809), // + /*********************************************************************************************************************** * XYROBOT * diff --git a/src/main/java/a8k/extui/page/driver/OptScannerCtrlPage.java b/src/main/java/a8k/extui/page/driver/OptScannerCtrlPage.java index 4554733..b909e87 100644 --- a/src/main/java/a8k/extui/page/driver/OptScannerCtrlPage.java +++ b/src/main/java/a8k/extui/page/driver/OptScannerCtrlPage.java @@ -29,7 +29,6 @@ public class OptScannerCtrlPage { Integer dpos = 10; - public Object readAllRegs() throws AppException { ZJsonNode node = new ZJsonNode(); for (OptModuleRegIndex reg : OptModuleRegIndex.values()) { @@ -48,29 +47,37 @@ public class OptScannerCtrlPage { optModuleDriver.setReg(reg, val); } - public void setStartAndStopVel(Integer v) throws AppException { - optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_scan_vstart, v); - optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_scan_vstop, v); - } - public void setV1(Integer v) throws AppException { - optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_scan_v1, v); + public void setFoptIRun(Integer irun) throws AppException { + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_irun, irun); } - public void setA1AndD1(Integer acc) throws AppException { - optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_scan_a1, acc); - optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_scan_d1, acc); + public void setFOptVCfg(Integer vStart, Integer vStop, Integer a1, Integer v1, Integer amax, Integer defaultV) throws AppException { + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_v1, v1); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_a1, a1); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_d1, a1); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_amax, amax); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_dmax, amax); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_vdefault, defaultV); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_vstart, vStart); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_vstop, vStop); } - public void setAmaxAndDmax(Integer acc) throws AppException { - optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_scan_amax, acc); - optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_scan_dmax, acc); - } - public void setDefaultVel(Integer v) throws AppException { - optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_scan_vdefault, v); + public void setTOptIRun(Integer irun) throws AppException { + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_irun, irun); } + public void setTOptVCfg(Integer vStart, Integer vStop, Integer a1, Integer v1, Integer amax, Integer defaultV) throws AppException { + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_v1, v1); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_a1, a1); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_d1, a1); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_amax, amax); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_dmax, amax); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_vdefault, defaultV); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_vstart, vStart); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_vstop, vStop); + } public Integer readReg(OptModuleRegIndex reg) { @@ -86,17 +93,29 @@ public class OptScannerCtrlPage { void init() { var page = extApiPageMgr.newPage(this); page.newGroup("寄存器配置"); - page.addFunction("设置起停速度", this::setStartAndStopVel).setParamVal("v", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_scan_vstart)); - page.addFunction("设置V1", this::setV1).setParamVal("v", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_scan_v1)); - page.addFunction("设置加速度", this::setA1AndD1).setParamVal("acc", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_scan_a1)); - page.addFunction("设置最大加速度", this::setAmaxAndDmax).setParamVal("acc", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_scan_amax)); - page.addFunction("设置默认速度", this::setDefaultVel).setParamVal("v", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_scan_vdefault)); + page.addFunction("设置F光学电机IRUN", this::setFoptIRun).setParamVal("irun", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_irun)); + page.addFunction("设置F光学电机运行参数", this::setFOptVCfg) + .setParamVal("vStart", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_vstart)) + .setParamVal("vStop", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_vstop)) + .setParamVal("a1", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_a1)) + .setParamVal("v1", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_v1)) + .setParamVal("amax", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_amax)) + .setParamVal("defaultV", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_f_scan_vdefault)); + + page.addFunction("设置T光学电机IRUN", this::setTOptIRun).setParamVal("irun", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_irun)); + page.addFunction("设置T光学电机运行参数", this::setTOptVCfg) + .setParamVal("vStart", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_vstart)) + .setParamVal("vStop", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_vstop)) + .setParamVal("a1", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_a1)) + .setParamVal("v1", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_v1)) + .setParamVal("amax", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_amax)) + .setParamVal("defaultV", () -> readReg(OptModuleRegIndex.kreg_a8k_opt_t_scan_vdefault)); + page.addFunction("设置寄存器", this::setReg); page.addFunction("读取所有寄存器", this::readAllRegs); - extApiPageMgr.addPage(page); diff --git a/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java b/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java index 1779320..b34f636 100644 --- a/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java +++ b/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java @@ -1,5 +1,8 @@ package a8k.extui.page.extapp; +import a8k.app.dao.type.combination.ProjBuildinInfo; +import a8k.app.optalgo.type.A8kOptPeakInfo; +import a8k.app.service.data.ProjInfoMgrService; import a8k.app.type.a8k.ConsumableGroup; import a8k.app.type.a8k.pos.IncubatorPos; import a8k.app.service.lowerctrl.DeviceMoveToZeroCtrlService; @@ -16,8 +19,8 @@ import a8k.app.type.exception.AppException; import a8k.app.hardware.utils.OptGainConvert; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.util.HashMap; @@ -36,19 +39,15 @@ import java.util.Map; * FOptScanStartPos (F光学扫描起始位置) */ @Component +@Slf4j +@RequiredArgsConstructor public class OptModuleParamCalibration { - private static final Logger log = LoggerFactory.getLogger(OptModuleParamCalibration.class); - @Resource - OptModuleExtParamsMgr optModuleExtParamsMgr; - @Resource - PlateBoxCtrlService plateBoxCtrlService; - @Resource - OptScanModuleCtrlService optScanModuleCtrlService; - - - @Resource - DeviceMoveToZeroCtrlService deviceMoveToZeroCtrlService; + private final OptModuleExtParamsMgr optModuleExtParamsMgr; + private final PlateBoxCtrlService plateBoxCtrlService; + private final OptScanModuleCtrlService optScanModuleCtrlService; + private final DeviceMoveToZeroCtrlService deviceMoveToZeroCtrlService; + private final ProjInfoMgrService projInfoMgrService; @ExtApiStatu(name = "", group = "F光学参数", order = 1) @@ -99,7 +98,8 @@ public class OptModuleParamCalibration { optScanModuleCtrlService.dropPlate(); } - A8kScanCurve fcurveCache = null; + A8kScanCurve FCurveCache = null; + public void setFOptScanShift(Integer shift) throws AppException { if (shift < 0) { throw AppException.ofAECodeError("扫描偏移量必须大于0"); @@ -108,11 +108,11 @@ public class OptModuleParamCalibration { Integer oldShift = optModuleExtParamsMgr.getParam(OptModuleExtParam.FOptScanShift, Integer.class); Integer diffShift = shift - oldShift; - if (fcurveCache != null) { - for (int i = 0; i < fcurveCache.refCurve.size(); i++) { + if (FCurveCache != null) { + for (int i = 0; i < FCurveCache.refCurve.size(); i++) { // log.info("i={}, fcurveCache.refCurve.get(i)={}, diffShift={}", i, fcurveCache.refCurve.get(i), diffShift); // log.info("new value={}", fcurveCache.refCurve.get(i) - diffShift); - fcurveCache.refCurve.set(i, fcurveCache.refCurve.get(i) + diffShift); + FCurveCache.refCurve.set(i, FCurveCache.refCurve.get(i) + diffShift); } } @@ -136,19 +136,19 @@ public class OptModuleParamCalibration { Integer rawScanGain = OptGainConvert.scanerToRawGain(A8kOptType.FOPT, scanGain); Integer rawLasterGain = optModuleExtParamsMgr.getOptLasterRawGain(A8kOptType.FOPT); var result = optScanModuleCtrlService.startOptScan(A8kOptType.FOPT, rawLasterGain, rawScanGain); - fcurveCache = A8kScanCurveFactory.createScanCurve1200Point(result); - return fcurveCache; + FCurveCache = A8kScanCurveFactory.createScanCurve1200Point(result); + return FCurveCache; } - public A8kScanCurve getFCurveCache() { - return fcurveCache; + synchronized public A8kScanCurve getFCurveCache() { + return FCurveCache; } // //T光学 // - + A8kScanCurve TCurveCache = null; public void setTOptScanShift(Integer shift) throws AppException { if (shift < 0) { @@ -174,7 +174,26 @@ public class OptModuleParamCalibration { Integer rawLasterGain = optModuleExtParamsMgr.getOptLasterRawGain(A8kOptType.TOPT); var result = optScanModuleCtrlService.startOptScan(A8kOptType.TOPT, rawLasterGain, rawScanGain); - return A8kScanCurveFactory.createScanCurve1200Point(result); + TCurveCache = A8kScanCurveFactory.createScanCurve1200Point(result); + return TCurveCache; + } + + synchronized public A8kScanCurve getTCurveCache() { + return TCurveCache; + } + + + A8kScanCurve optScanCurve = null; + + public A8kOptPeakInfo doOptScan(Integer projId, Integer subProjIndex) throws AppException { + ProjBuildinInfo projBuildinInfo = projInfoMgrService.getProjBuildInInfo(projId); + var result = optScanModuleCtrlService.optScan(projBuildinInfo, subProjIndex); + optScanCurve = A8kScanCurveFactory.createScanCurve1200Point(result.rawData.rawData); + return result.analysResult; + } + + synchronized public A8kScanCurve getOptScanCurve() { + return optScanCurve; } @@ -208,6 +227,11 @@ public class OptModuleParamCalibration { page.addFunction("设置接收放大倍数[0.5->21.7]", this::setTOptScanAmplVal) .setParamVal("val", () -> optModuleExtParamsMgr.getParam(OptModuleExtParam.TOptScanGainVal, Double.class)); page.addFunction("扫描", this::TOptScan); + page.addFunction("查看波形", this::getTCurveCache); + + page.newGroup("光学扫描"); + page.addFunction("光学扫描", this::doOptScan).setParamVal("projId", () -> 1).setParamVal("subProjIndex", () -> 0); + page.addFunction("查看光学扫描波形", this::getOptScanCurve); extApiPageMgr.addPage(page); }