From 55d7911d882209d411c4f12e889078cdfa4522f4 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 22 May 2025 22:17:57 +0800 Subject: [PATCH] update --- .../app/hardware/driver/PipetteCtrlDriverV2.java | 5 ++- .../type/pipette_module/cfg/PlatformInfoIndex.java | 3 +- .../PipetteGunContainerConfigSettingPage.java | 44 +++++++++++----------- .../PipetteGunOperationCtrlPage.java | 25 ++++++++---- .../PipetteGunPlatformSettingPage.java | 10 ++++- 5 files changed, 52 insertions(+), 35 deletions(-) diff --git a/src/main/java/a8k/app/hardware/driver/PipetteCtrlDriverV2.java b/src/main/java/a8k/app/hardware/driver/PipetteCtrlDriverV2.java index 91e58be..dc969af 100644 --- a/src/main/java/a8k/app/hardware/driver/PipetteCtrlDriverV2.java +++ b/src/main/java/a8k/app/hardware/driver/PipetteCtrlDriverV2.java @@ -5,6 +5,7 @@ import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.*; import a8k.app.hardware.type.pipette_module.AspirationParamId; import a8k.app.hardware.type.pipette_module.PipetteStateIndex; +import a8k.app.hardware.type.pipette_module.cpyidx.ContainerCpyId; import a8k.app.hardware.type.pipette_module.cpyidx.PMVCpyIdx; import a8k.app.hardware.type.pipette_module.cpyidx.ZMVCpyIdx; import a8k.app.hardware.type.pipette_module.cfg.*; @@ -267,8 +268,8 @@ public class PipetteCtrlDriverV2 { waitForMod(CmdId.pipette_pump_putbak_tip); } - public void pipettePumpPierceThroughBlock() throws AppException { - callcmd(MId.PipetteMod, CmdId.pipette_pump_pierce_through); + public void pipettePumpPierceThroughBlock(ContainerCpyId containerCpyId, Integer containerPos) throws AppException { + callcmd(MId.PipetteMod, CmdId.pipette_pump_pierce_through, containerCpyId.toInteger(), containerPos); waitForMod(CmdId.pipette_pump_pierce_through); } diff --git a/src/main/java/a8k/app/hardware/type/pipette_module/cfg/PlatformInfoIndex.java b/src/main/java/a8k/app/hardware/type/pipette_module/cfg/PlatformInfoIndex.java index 5dd18db..f8e364e 100644 --- a/src/main/java/a8k/app/hardware/type/pipette_module/cfg/PlatformInfoIndex.java +++ b/src/main/java/a8k/app/hardware/type/pipette_module/cfg/PlatformInfoIndex.java @@ -11,6 +11,7 @@ public enum PlatformInfoIndex { tipPickingPos, // 开始取tip位置(绝对位置0.1mm) tipPickingSearchRange, // 取tip的范围 + tipPickingAppendDistance, // 取tip时z轴的附加距离 tipDepositPos, // 丢tip位置(绝对位置0.1mm) transformPos, // 移液枪安全移动的高度(绝对位置0.1mm) @@ -25,8 +26,6 @@ public enum PlatformInfoIndex { tipLength, // tip长度 ; - ; - public Integer toInteger() { return ordinal(); } diff --git a/src/main/java/a8k/extui/page/driver/pipette_module/PipetteGunContainerConfigSettingPage.java b/src/main/java/a8k/extui/page/driver/pipette_module/PipetteGunContainerConfigSettingPage.java index a73e8d5..b705356 100644 --- a/src/main/java/a8k/extui/page/driver/pipette_module/PipetteGunContainerConfigSettingPage.java +++ b/src/main/java/a8k/extui/page/driver/pipette_module/PipetteGunContainerConfigSettingPage.java @@ -42,48 +42,48 @@ public class PipetteGunContainerConfigSettingPage { } } - void setContainerType(ContainerCpyId cpyid, Integer containerType) throws AppException { - pipetteCtrlDriverV2.setContainerInfo(cpyid.toInteger(), ContainerInfoIndex.containerType, containerType); + void setContainerType( Integer containerType) throws AppException { + pipetteCtrlDriverV2.setContainerInfo(cpyId.toInteger(), ContainerInfoIndex.containerType, containerType); } - void setContainerNeckPos(ContainerCpyId cpyid, Integer containerNeckPos) throws AppException { - pipetteCtrlDriverV2.setContainerInfo(cpyid.toInteger(), ContainerInfoIndex.containerNeckPos, containerNeckPos); + void setContainerNeckPos( Integer containerNeckPos) throws AppException { + pipetteCtrlDriverV2.setContainerInfo(cpyId.toInteger(), ContainerInfoIndex.containerNeckPos, containerNeckPos); } - void setContainerDepth(ContainerCpyId cpyid, Integer containerDepth) throws AppException { - pipetteCtrlDriverV2.setContainerInfo(cpyid.toInteger(), ContainerInfoIndex.containerDepth, containerDepth); + void setContainerDepth( Integer containerDepth) throws AppException { + pipetteCtrlDriverV2.setContainerInfo(cpyId.toInteger(), ContainerInfoIndex.containerDepth, containerDepth); } - void setContainerRound(ContainerCpyId cpyid, Integer containerRound) throws AppException { - pipetteCtrlDriverV2.setContainerInfo(cpyid.toInteger(), ContainerInfoIndex.containerRound, containerRound); + void setContainerRound( Integer containerRound) throws AppException { + pipetteCtrlDriverV2.setContainerInfo(cpyId.toInteger(), ContainerInfoIndex.containerRound, containerRound); } - void setContainerBottomSectionHeight(ContainerCpyId cpyid, Integer containerBottomSectionHeight) throws AppException { - pipetteCtrlDriverV2.setContainerInfo(cpyid.toInteger(), ContainerInfoIndex.containerBottomSectionHeight, containerBottomSectionHeight); + void setContainerBottomSectionHeight( Integer containerBottomSectionHeight) throws AppException { + pipetteCtrlDriverV2.setContainerInfo(cpyId.toInteger(), ContainerInfoIndex.containerBottomSectionHeight, containerBottomSectionHeight); } - void setImmersionDepth(ContainerCpyId cpyid, Integer immersionDepth) throws AppException { - pipetteCtrlDriverV2.setContainerInfo(cpyid.toInteger(), ContainerInfoIndex.immersionDepth, immersionDepth); + void setImmersionDepth( Integer immersionDepth) throws AppException { + pipetteCtrlDriverV2.setContainerInfo(cpyId.toInteger(), ContainerInfoIndex.immersionDepth, immersionDepth); } - void setLeavingHeight(ContainerCpyId cpyid, Integer leavingHeight) throws AppException { - pipetteCtrlDriverV2.setContainerInfo(cpyid.toInteger(), ContainerInfoIndex.leavingHeight, leavingHeight); + void setLeavingHeight( Integer leavingHeight) throws AppException { + pipetteCtrlDriverV2.setContainerInfo(cpyId.toInteger(), ContainerInfoIndex.leavingHeight, leavingHeight); } - void setJetHeight(ContainerCpyId cpyid, Integer jetHeight) throws AppException { - pipetteCtrlDriverV2.setContainerInfo(cpyid.toInteger(), ContainerInfoIndex.jetHeight, jetHeight); + void setJetHeight( Integer jetHeight) throws AppException { + pipetteCtrlDriverV2.setContainerInfo(cpyId.toInteger(), ContainerInfoIndex.jetHeight, jetHeight); } - void setLldStartSearchDepth(ContainerCpyId cpyid, Integer lldStartSearchDepth) throws AppException { - pipetteCtrlDriverV2.setContainerInfo(cpyid.toInteger(), ContainerInfoIndex.lldStartSearchDepth, lldStartSearchDepth); + void setLldStartSearchDepth( Integer lldStartSearchDepth) throws AppException { + pipetteCtrlDriverV2.setContainerInfo(cpyId.toInteger(), ContainerInfoIndex.lldStartSearchDepth, lldStartSearchDepth); } - void setFixAspirationDepth(ContainerCpyId cpyid, Integer fixAspirationDepth) throws AppException { - pipetteCtrlDriverV2.setContainerInfo(cpyid.toInteger(), ContainerInfoIndex.fixAspirationDepth, fixAspirationDepth); + void setFixAspirationDepth( Integer fixAspirationDepth) throws AppException { + pipetteCtrlDriverV2.setContainerInfo(cpyId.toInteger(), ContainerInfoIndex.fixAspirationDepth, fixAspirationDepth); } - void setLlFvConvertCoefficient(ContainerCpyId cpyid, Integer llfVConvertCoefficient) throws AppException { - pipetteCtrlDriverV2.setContainerInfo(cpyid.toInteger(), ContainerInfoIndex.llfVConvertCoefficient, llfVConvertCoefficient); + void setLlFvConvertCoefficient( Integer llfVConvertCoefficient) throws AppException { + pipetteCtrlDriverV2.setContainerInfo(cpyId.toInteger(), ContainerInfoIndex.llfVConvertCoefficient, llfVConvertCoefficient); } void setPierceDepth(Integer pierceDepth) throws AppException { diff --git a/src/main/java/a8k/extui/page/driver/pipette_module/PipetteGunOperationCtrlPage.java b/src/main/java/a8k/extui/page/driver/pipette_module/PipetteGunOperationCtrlPage.java index f80c5d3..202cdf5 100644 --- a/src/main/java/a8k/extui/page/driver/pipette_module/PipetteGunOperationCtrlPage.java +++ b/src/main/java/a8k/extui/page/driver/pipette_module/PipetteGunOperationCtrlPage.java @@ -5,6 +5,7 @@ import a8k.app.hardware.type.pipette_module.AspirationParamId; import a8k.app.hardware.type.pipette_module.cfg.ContainerInfoIndex; import a8k.app.hardware.type.pipette_module.cfg.LiquidInfoIndex; import a8k.app.hardware.type.pipette_module.cfg.PlatformInfoIndex; +import a8k.app.hardware.type.pipette_module.cpyidx.ContainerCpyId; import a8k.app.type.exception.AppException; import a8k.extui.mgr.ExtApiPageMgr; import jakarta.annotation.PostConstruct; @@ -21,6 +22,7 @@ public class PipetteGunOperationCtrlPage { private final ExtApiPageMgr extApiPageMgr; private final PipetteCtrlDriverV2 pipetteCtrlDriverV2; + Integer platInfoCpyId = 0; Integer volume; Integer containerPos; @@ -54,20 +56,26 @@ public class PipetteGunOperationCtrlPage { pipetteCtrlDriverV2.pipettePumpAspirateBlock(); } - public void pipettePumpInitDeviceBlock(PlatformInfoIndex platInfoCpyId) throws AppException { - pipetteCtrlDriverV2.pipettePumpInitDeviceBlock(platInfoCpyId); + public void pipettePumpInitDeviceBlock(Integer cpyId) throws AppException { + pipetteCtrlDriverV2.pipettePumpInitDeviceBlock(cpyId); + platInfoCpyId = cpyId; } public void pipettePumpTakeTipBlock() throws AppException { pipetteCtrlDriverV2.pipettePumpTakeTipBlock(); } - public void pipettePumpPutTipBlock() throws AppException { + public void pipettePumpDepositTip() throws AppException { pipetteCtrlDriverV2.pipettePumpDepositTipBlock(); } - public void pipettePumpPierceThroughBlock() throws AppException { - pipetteCtrlDriverV2.pipettePumpPierceThroughBlock(); + public void pipettePumpPutBakTip() throws AppException { + pipetteCtrlDriverV2.pipettePumpPutBakTipBlock(); + } + + + public void pipettePumpPierceThroughBlock(ContainerCpyId containerCpyId, Integer containerPos) throws AppException { + pipetteCtrlDriverV2.pipettePumpPierceThroughBlock(containerCpyId, containerPos); } @@ -88,11 +96,14 @@ public class PipetteGunOperationCtrlPage { page.addFunction("设置混匀体积", this::setMixVolume).setParamVal("mixVolume", () -> mixVolume); page.addFunction("设置混匀次数", this::setMixTimes).setParamVal("mixTimes", () -> mixTimes); page.newGroup(" 操作"); - page.addFunction("初始化设备", this::pipettePumpInitDeviceBlock); + page.addFunction("初始化设备", this::pipettePumpInitDeviceBlock) + .setParamVal("cpyId", () -> platInfoCpyId); page.addFunction("取Tip", this::pipettePumpTakeTipBlock); - page.addFunction("放Tip", this::pipettePumpPutTipBlock); + page.addFunction("放回Tip", this::pipettePumpPutBakTip); + page.addFunction("丢Tip", this::pipettePumpDepositTip); page.addFunction("刺破", this::pipettePumpPierceThroughBlock); page.addFunction("执行吸取", this::execAspirate); + extApiPageMgr.addPage(page); } diff --git a/src/main/java/a8k/extui/page/driver/pipette_module/PipetteGunPlatformSettingPage.java b/src/main/java/a8k/extui/page/driver/pipette_module/PipetteGunPlatformSettingPage.java index d488a2f..cef52ed 100644 --- a/src/main/java/a8k/extui/page/driver/pipette_module/PipetteGunPlatformSettingPage.java +++ b/src/main/java/a8k/extui/page/driver/pipette_module/PipetteGunPlatformSettingPage.java @@ -45,9 +45,11 @@ public class PipetteGunPlatformSettingPage { pipetteCtrlDriverV2.setPlatInfo(platformInfCpyId, PlatformInfoIndex.workRefPos, val); } - public void setTipPickingPos(Integer startPos, Integer searchRange) throws AppException { + public void setTipPickingPos(Integer startPos, Integer searchRange,Integer appendDistance) throws AppException { pipetteCtrlDriverV2.setPlatInfo(platformInfCpyId, PlatformInfoIndex.tipPickingPos, startPos); pipetteCtrlDriverV2.setPlatInfo(platformInfCpyId, PlatformInfoIndex.tipPickingSearchRange, searchRange); + pipetteCtrlDriverV2.setPlatInfo(platformInfCpyId, PlatformInfoIndex.tipPickingAppendDistance, appendDistance); + } public void setTipDepositPos(Integer val) throws AppException { @@ -66,6 +68,9 @@ public class PipetteGunPlatformSettingPage { pipetteCtrlDriverV2.setPlatInfo(platformInfCpyId, PlatformInfoIndex.tipLength, val); } + public void setTipPickingAppendDistance(Integer val) throws AppException { + } + @PostConstruct void init() { @@ -77,7 +82,8 @@ public class PipetteGunPlatformSettingPage { .setParamVal("val", () -> getPlatInfo(platformInfCpyId, PlatformInfoIndex.workRefPos)); page.addFunction("设置取Tip位置", this::setTipPickingPos) .setParamVal("startPos", () -> getPlatInfo(platformInfCpyId, PlatformInfoIndex.tipPickingPos)) - .setParamVal("searchRange", () -> getPlatInfo(platformInfCpyId, PlatformInfoIndex.tipPickingSearchRange)); + .setParamVal("searchRange", () -> getPlatInfo(platformInfCpyId, PlatformInfoIndex.tipPickingSearchRange)) + .setParamVal("appendDistance", () -> getPlatInfo(platformInfCpyId, PlatformInfoIndex.tipPickingAppendDistance)); page.addFunction("设置丢Tip位置", this::setTipDepositPos) .setParamVal("val", () -> getPlatInfo(platformInfCpyId, PlatformInfoIndex.tipDepositPos)); page.addFunction("设置水平移动位", this::setTransformPos)