diff --git a/src/main/java/a8k/canbus/protocol/A8kEcode.java b/src/main/java/a8k/canbus/protocol/A8kEcode.java index dec9d8a..e9c2637 100644 --- a/src/main/java/a8k/canbus/protocol/A8kEcode.java +++ b/src/main/java/a8k/canbus/protocol/A8kEcode.java @@ -30,6 +30,8 @@ public enum A8kEcode { PullPlateFail(24, "钩板卡板"),// ShakeModGripperYSVInXYPublicArea(25, "摇匀模组抓手在XY公共区域"),// ZMNotAtZPosWhenHbotTryMove(26, "HBOT启动时,Z轴电机没有在原点"),// + TakeTipFail(27, "取Tip失败"),// + PutTipFail(28, "放Tip失败"),// // // FOR HARDWARE diff --git a/src/main/java/a8k/service/hardware/HbotControlService.java b/src/main/java/a8k/service/hardware/HbotControlService.java index c701274..9c2953c 100644 --- a/src/main/java/a8k/service/hardware/HbotControlService.java +++ b/src/main/java/a8k/service/hardware/HbotControlService.java @@ -381,6 +381,11 @@ public class HbotControlService implements HardwareCtrlModule { canBus.stepMotorEasyMoveToBlock(MId.PipetteModZM, tipPos.pickUpZPos - 100, getActionOvertime()); canBus.pipetteCtrlPutTipBlock(MId.PipetteMod); + + if(canBus.moduleGetReg(MId.PipetteMod, RegIndex.kreg_pipette_tip_state) == 1){ + throw new HardwareException(A8kEcode.PutTipFail); + } + canBus.stepMotorEasyMoveToZeroPointQuickBlock(MId.PipetteModZM, getActionOvertime()); return ret; } @@ -392,6 +397,10 @@ public class HbotControlService implements HardwareCtrlModule { Map result = new HashMap<>(); for (int i = startFrom; i < TipPickUpPosInfo.cgetTipNum(); i++) { var ret = takeTipTestStep(groupId, i); + if(!ret.getData()){ + throw new HardwareException(A8kEcode.TakeTipFail); + } + result.put("Tip" + i, ret.getData() ? "suc" : "fail"); logger.info("Take Tip {}-{} => {}", groupId, i, ret.getData()); if (!testTakeTipFlag) {