diff --git a/src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java b/src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java index d8e3734..11a492e 100644 --- a/src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java +++ b/src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java @@ -52,6 +52,7 @@ public class OptScanModuleCtrlService { TurnableMoveCtrlService turnableMoveCtrlService; + public void pullPlate(IncubatorPos turntablePosIndex) throws AppException { turnableMoveCtrlService.trunableMoveToPullPos(turntablePosIndex); stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.OptModScannerM, optModuleParamsMgr.getOptScanerScandbyPos(), overtime); @@ -68,24 +69,28 @@ public class OptScanModuleCtrlService { public Integer[] startOptScan(A8kOptType optType, Integer rawScanGain) throws AppException { Integer forwardScanPos = optModuleExtParamsMgr.getOptScanStartPos(optType); - + Integer backwardScanPos = forwardScanPos - 1200; // Double scanGain = optModuleExtParamsMgr.getScanGain(optType); // Integer rawScanGain = OptGainConvert.scanerToRawGain(optType, scanGain); Integer lasterGain = optModuleExtParamsMgr.getOptEmissionIntensity(optType); + switch (optType) { case TOPT -> { optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_t_pos_offset, forwardScanPos); - optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_t_reverse_scan_pos_offset, forwardScanPos - 1200); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_t_reverse_scan_pos_offset, backwardScanPos); optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_scan_pointnum, 1200); } case FOPT -> { optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_f_pos_offset, forwardScanPos); - optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_f_reverse_scan_pos_offset, forwardScanPos - 1200); + optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_f_reverse_scan_pos_offset, backwardScanPos); optModuleDriver.setReg(OptModuleRegIndex.kreg_a8k_opt_scan_pointnum, 1200); } } + stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.OptModScannerM, forwardScanPos, overtime); + + switch (optType) { case TOPT -> optModuleDriver.optTStartScan(OptScanDirection.FORWARD, lasterGain, rawScanGain); case FOPT -> optModuleDriver.optFStartScan(OptScanDirection.FORWARD, lasterGain, rawScanGain); diff --git a/src/main/java/a8k/service/app/devicectrl/driver/OptModuleDriver.java b/src/main/java/a8k/service/app/devicectrl/driver/OptModuleDriver.java index f81e6b3..a1f717b 100644 --- a/src/main/java/a8k/service/app/devicectrl/driver/OptModuleDriver.java +++ b/src/main/java/a8k/service/app/devicectrl/driver/OptModuleDriver.java @@ -1,5 +1,6 @@ package a8k.service.app.devicectrl.driver; +import a8k.OS; import a8k.hardware.A8kCanBusService; import a8k.hardware.type.a8kcanprotocol.CmdId; import a8k.hardware.type.a8kcanprotocol.MId; @@ -24,13 +25,19 @@ public class OptModuleDriver { @Resource A8kCanBusService canBus; + public void optTStartScan(OptScanDirection scanDirection, Integer lasterGain, Integer scanGain) throws AppException { + canBus.callcmd(MId.OptMod, CmdId.a8k_opt_v2_t_start_scan, scanDirection.getInteger(), lasterGain, scanGain); + //TODO: 2024-10-26 zhaohe,修改底层,光学结束上报一条完成事件 + OS.forceSleep(6000); canBus.waitForMod(MId.OptMod, actionOvertime); } public void optFStartScan(OptScanDirection scanDirection, Integer lasterGain, Integer scanGain) throws AppException { canBus.callcmd(MId.OptMod, CmdId.a8k_opt_v2_f_start_scan, scanDirection.getInteger(), lasterGain, scanGain); + //TODO: 2024-10-26 zhaohe,修改底层,光学结束上报一条完成事件 + OS.forceSleep(9000); canBus.waitForMod(MId.OptMod, actionOvertime); } diff --git a/src/main/java/a8k/service/app/devicectrl/param/calibration/OptModuleParamCalibration.java b/src/main/java/a8k/service/app/devicectrl/param/calibration/OptModuleParamCalibration.java index 8c7b530..7613544 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/calibration/OptModuleParamCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/param/calibration/OptModuleParamCalibration.java @@ -92,7 +92,7 @@ public class OptModuleParamCalibration { * From: 0号仓 * TrunablePos:0号仓到 */ - @ExtApiFn(name = "推板到光学模组", group = "测试工具", order = 100) + @ExtApiFn(name = "推板到光学模组(自动丢弃当前板)", group = "测试工具", order = 100) public void pushOnePlateToOptModule() throws AppException { //先清空当前通道 optScanModuleCtrlService.dropPlate(); @@ -104,7 +104,7 @@ public class OptModuleParamCalibration { optScanModuleCtrlService.pullPlate(IncubatorPos.SPACE01); } - @ExtApiFn(name = "拉板到光学模组", group = "测试工具", order = 101) + @ExtApiFn(name = "丢板", group = "测试工具", order = 101) public void dropPlate() throws AppException { optScanModuleCtrlService.dropPlate(); } @@ -145,7 +145,10 @@ public class OptModuleParamCalibration { //FOptScanAmplVal @ExtApiFn(name = "设置F光学扫描偏移", group = "F光学", order = 300) - public void setFOptScanShift(Integer shift) { + public void setFOptScanShift(Integer shift) throws AppException { + if (shift < 0) { + throw AppException.of("扫描偏移量必须大于0"); + } optModuleExtParamsMgr.setOptParam(OptModuleExtParam.FOptScanShift, shift); } @@ -172,7 +175,10 @@ public class OptModuleParamCalibration { // @ExtApiFn(name = "设置T光学扫描偏移", group = "T光学", order = 400) - public void setTOptScanShift(Integer shift) { + public void setTOptScanShift(Integer shift) throws AppException { + if (shift < 0) { + throw AppException.of("扫描偏移量必须大于0"); + } optModuleExtParamsMgr.setOptParam(OptModuleExtParam.TOptScanShift, shift); } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java index 59d1ae3..240beed 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java @@ -9,6 +9,7 @@ import jakarta.annotation.PostConstruct; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import org.springframework.util.Assert; /** * HBOT二维码扫描坐标参数 @@ -35,8 +36,11 @@ public class OptModuleExtParamsMgr extends ParamMgr { case FOPT -> getParam(OptModuleExtParam.FOptScanShift, Integer.class); }; + Assert.notNull(shift, "扫描偏移量不能为空"); + Assert.isTrue(shift > 0, "扫描偏移量必须大于0"); + Integer scanStartPos = getParam(OptModuleExtParam.OptScanRefPos, Integer.class); - scanStartPos = scanStartPos + shift; + scanStartPos = scanStartPos - shift; return scanStartPos; }