|
@ -1,5 +1,8 @@ |
|
|
package a8k.extui.page.extapp; |
|
|
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.ConsumableGroup; |
|
|
import a8k.app.type.a8k.pos.IncubatorPos; |
|
|
import a8k.app.type.a8k.pos.IncubatorPos; |
|
|
import a8k.app.service.lowerctrl.DeviceMoveToZeroCtrlService; |
|
|
import a8k.app.service.lowerctrl.DeviceMoveToZeroCtrlService; |
|
@ -16,8 +19,8 @@ import a8k.app.type.exception.AppException; |
|
|
import a8k.app.hardware.utils.OptGainConvert; |
|
|
import a8k.app.hardware.utils.OptGainConvert; |
|
|
import jakarta.annotation.PostConstruct; |
|
|
import jakarta.annotation.PostConstruct; |
|
|
import jakarta.annotation.Resource; |
|
|
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 org.springframework.stereotype.Component; |
|
|
|
|
|
|
|
|
import java.util.HashMap; |
|
|
import java.util.HashMap; |
|
@ -36,19 +39,15 @@ import java.util.Map; |
|
|
* FOptScanStartPos (F光学扫描起始位置) |
|
|
* FOptScanStartPos (F光学扫描起始位置) |
|
|
*/ |
|
|
*/ |
|
|
@Component |
|
|
@Component |
|
|
|
|
|
@Slf4j |
|
|
|
|
|
@RequiredArgsConstructor |
|
|
public class OptModuleParamCalibration { |
|
|
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) |
|
|
@ExtApiStatu(name = "", group = "F光学参数", order = 1) |
|
@ -99,7 +98,8 @@ public class OptModuleParamCalibration { |
|
|
optScanModuleCtrlService.dropPlate(); |
|
|
optScanModuleCtrlService.dropPlate(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
A8kScanCurve fcurveCache = null; |
|
|
|
|
|
|
|
|
A8kScanCurve FCurveCache = null; |
|
|
|
|
|
|
|
|
public void setFOptScanShift(Integer shift) throws AppException { |
|
|
public void setFOptScanShift(Integer shift) throws AppException { |
|
|
if (shift < 0) { |
|
|
if (shift < 0) { |
|
|
throw AppException.ofAECodeError("扫描偏移量必须大于0"); |
|
|
throw AppException.ofAECodeError("扫描偏移量必须大于0"); |
|
@ -108,11 +108,11 @@ public class OptModuleParamCalibration { |
|
|
Integer oldShift = optModuleExtParamsMgr.getParam(OptModuleExtParam.FOptScanShift, Integer.class); |
|
|
Integer oldShift = optModuleExtParamsMgr.getParam(OptModuleExtParam.FOptScanShift, Integer.class); |
|
|
Integer diffShift = shift - oldShift; |
|
|
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("i={}, fcurveCache.refCurve.get(i)={}, diffShift={}", i, fcurveCache.refCurve.get(i), diffShift); |
|
|
// log.info("new value={}", 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 rawScanGain = OptGainConvert.scanerToRawGain(A8kOptType.FOPT, scanGain); |
|
|
Integer rawLasterGain = optModuleExtParamsMgr.getOptLasterRawGain(A8kOptType.FOPT); |
|
|
Integer rawLasterGain = optModuleExtParamsMgr.getOptLasterRawGain(A8kOptType.FOPT); |
|
|
var result = optScanModuleCtrlService.startOptScan(A8kOptType.FOPT, rawLasterGain, rawScanGain); |
|
|
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光学 |
|
|
//T光学 |
|
|
// |
|
|
// |
|
|
|
|
|
|
|
|
|
|
|
A8kScanCurve TCurveCache = null; |
|
|
|
|
|
|
|
|
public void setTOptScanShift(Integer shift) throws AppException { |
|
|
public void setTOptScanShift(Integer shift) throws AppException { |
|
|
if (shift < 0) { |
|
|
if (shift < 0) { |
|
@ -174,7 +174,26 @@ public class OptModuleParamCalibration { |
|
|
Integer rawLasterGain = optModuleExtParamsMgr.getOptLasterRawGain(A8kOptType.TOPT); |
|
|
Integer rawLasterGain = optModuleExtParamsMgr.getOptLasterRawGain(A8kOptType.TOPT); |
|
|
|
|
|
|
|
|
var result = optScanModuleCtrlService.startOptScan(A8kOptType.TOPT, rawLasterGain, rawScanGain); |
|
|
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) |
|
|
page.addFunction("设置接收放大倍数[0.5->21.7]", this::setTOptScanAmplVal) |
|
|
.setParamVal("val", () -> optModuleExtParamsMgr.getParam(OptModuleExtParam.TOptScanGainVal, Double.class)); |
|
|
.setParamVal("val", () -> optModuleExtParamsMgr.getParam(OptModuleExtParam.TOptScanGainVal, Double.class)); |
|
|
page.addFunction("扫描", this::TOptScan); |
|
|
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); |
|
|
extApiPageMgr.addPage(page); |
|
|
} |
|
|
} |
|
|