From b998c632c6b5551e7dba0f8df241af532ebac706 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 1 Aug 2024 19:19:53 +0800 Subject: [PATCH] update --- .../devicectrl/ctrl/SamplesPreProcesCtrl.java | 10 ++- .../service/devicectrl/testscript/TestScript.java | 70 ++++++++++++++++++++- .../hardware/canbus/A8kModParamInitializer.java | 3 + .../service/hardware/canbus/protocol/A8kEcode.java | 2 + zhaohe_app.db | Bin 188416 -> 188416 bytes 5 files changed, 80 insertions(+), 5 deletions(-) diff --git a/src/main/java/a8k/service/devicectrl/ctrl/SamplesPreProcesCtrl.java b/src/main/java/a8k/service/devicectrl/ctrl/SamplesPreProcesCtrl.java index bb5063d..cab4352 100644 --- a/src/main/java/a8k/service/devicectrl/ctrl/SamplesPreProcesCtrl.java +++ b/src/main/java/a8k/service/devicectrl/ctrl/SamplesPreProcesCtrl.java @@ -95,6 +95,11 @@ public class SamplesPreProcesCtrl { canBus.stepMotorEnable(MId.ShakeModShakeM, 0); } + @EnginnerPageAction(name = "夹紧试管", group = "辅助调试", order = ORDER.moduleDisable) + public void clampTube() throws HardwareException, InterruptedException { + canBus.stepMotorEasyMoveToBlock(MId.ShakeModClampingM, pp.getShakeClampingPos(), timep.getActionOvertime()); + } + void tryClampTube() throws HardwareException, InterruptedException { canBus.miniServoMoveToBlock(MId.ShakeModGripperSV, pp.getGripperTakeCapPos() - 20, timep.getActionOvertime()); @@ -212,7 +217,8 @@ public class SamplesPreProcesCtrl { canBus.miniServoMoveToBlock(MId.ShakeModGripperSV, pp.getGripperTakeCapPos(), timep.getActionOvertime()); //Z上移动到零位 canBus.stepMotorEasyMoveToZeroPointQuickBlock(MId.ShakeModGripperZM, timep.getActionOvertime()); -// tryClampTube(); + // tryClampTube(); + // canBus.miniServoMoveToBlock(MId.ShakeModGripperSV, pp.getGripperTakeCapPos()-30, timep.getActionOvertime()); //Y移动到待机位 @@ -227,7 +233,7 @@ public class SamplesPreProcesCtrl { //移动Y轴到取试管帽位置 canBus.miniServoMoveToBlock(MId.ShakeModGripperYSV, pp.getGripperShakeYPos(), timep.getActionOvertime()); //移动Z轴盖帽 - canBus.stepMotorEasyMoveToBlock(MId.ShakeModGripperZM, pp.getGripperTakeCapZPos() + 10, timep.getActionOvertime()); + canBus.stepMotorEasyMoveToBlock(MId.ShakeModGripperZM, pp.getGripperTakeCapZPos() + 20, timep.getActionOvertime()); //打开试管夹 canBus.stepMotorEasyMoveToBlock(MId.ShakeModClampingM, 70, timep.getActionOvertime()); //移动Z轴到零位 diff --git a/src/main/java/a8k/service/devicectrl/testscript/TestScript.java b/src/main/java/a8k/service/devicectrl/testscript/TestScript.java index 31a87fd..36607da 100644 --- a/src/main/java/a8k/service/devicectrl/testscript/TestScript.java +++ b/src/main/java/a8k/service/devicectrl/testscript/TestScript.java @@ -8,6 +8,8 @@ import a8k.appbase.cfg.BottleGroupsPosInfo; import a8k.appbase.cfg.BottlesPosInfo; import a8k.appbase.cfg.TipPickUpPosInfo; import a8k.controler.engineer.utils.*; +import a8k.service.devicectrl.ctrl.SamplesPreProcesCtrl; +import a8k.service.devicectrl.ctrl.TubeRackMoveCtrl; import a8k.service.hardware.canbus.A8kCanBusService; import a8k.service.hardware.canbus.protocol.A8kEcode; import a8k.service.hardware.canbus.protocol.MId; @@ -50,6 +52,13 @@ public class TestScript { @Resource ReactionPlatesTransmitCtrl reactionPlatesTransmitCtrl; + + @Resource + SamplesPreProcesCtrl samplesPreProcesCtrl; + + @Resource + TubeRackMoveCtrl tubeRackMoveCtrl; + EnginnerParamReader settingReader = new EnginnerParamReader(HbotControlService.class); // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -57,6 +66,13 @@ public class TestScript { // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Boolean testScriptWorkFlag = false; + void checkTestScriptWorkFlag() throws HardwareException { + if (testScriptWorkFlag) { + testScriptWorkFlag = false; + throw new HardwareException(A8kEcode.TestScripIsRunning); + } + } + @EnginnerPageAction(name = "停止测试脚本", group = "控制") public void testTakeAllTipStop() { testScriptWorkFlag = false; @@ -64,6 +80,8 @@ public class TestScript { @EnginnerPageAction(name = "取放Tip-单步", group = "Hbot测试脚本") public AppRet takeTipTestStep(Integer tipgroup, Integer index) throws HardwareException, InterruptedException { + checkTestScriptWorkFlag(); + testScriptWorkFlag = true; var ret = hbotcs.takeTip(tipgroup, index); TipPickUpPosInfo tipPos = pp.getTipPickUpPosInfo(); @@ -75,13 +93,13 @@ public class TestScript { } canBus.stepMotorEasyMoveToZeroPointQuickBlock(MId.PipetteModZM, timep.getActionOvertime()); + testScriptWorkFlag = false; return ret; } @EnginnerPageAction(name = "取放Tip-全部", group = "Hbot测试脚本") public AppRet> testTakeAllTip(Integer groupId, Integer startFrom) throws HardwareException, InterruptedException { - // ObjectMapper mapper = new ObjectMapper(); - + checkTestScriptWorkFlag(); testScriptWorkFlag = true; Map result = new HashMap<>(); @@ -103,6 +121,8 @@ public class TestScript { @EnginnerPageAction(name = "测试所有小瓶缓冲液位置", group = "Hbot测试脚本") public void testAllLittleBottleBufferPos(ConsumableGroup group) throws HardwareException, InterruptedException { + checkTestScriptWorkFlag(); + testScriptWorkFlag = true; BottleGroupsPosInfo posInfo = pp.getBottleBufferPosInfo(); for (int i = 0; i < BottlesPosInfo.cgetMAX(); i++) { @@ -119,6 +139,8 @@ public class TestScript { @EnginnerPageAction(name = "测试所有探测物质位置", group = "Hbot测试脚本") public void testAllDetectMaterialPos(ConsumableGroup group) throws HardwareException, InterruptedException { + checkTestScriptWorkFlag(); + testScriptWorkFlag = true; for (int i = 0; i < BottlesPosInfo.cgetMAX(); i++) { BottleGroupsPosInfo pos = pp.getBottleBufferPosInfo(); @@ -134,6 +156,8 @@ public class TestScript { @EnginnerPageAction(name = "测试所有大瓶缓冲液位置", group = "Hbot测试脚本") public void testAllBigBottleBufferPos() throws HardwareException, InterruptedException { + checkTestScriptWorkFlag(); + testScriptWorkFlag = true; // 遍历枚举 ConsumableGroup for (ConsumableGroup group : ConsumableGroup.values()) { @@ -149,6 +173,7 @@ public class TestScript { @EnginnerPageAction(name = "推全部板同时丢弃", group = "板夹移动测试脚本") public void pushAllPlateAndDrop(ConsumableGroup PBCh, IncubatorPos startPos) throws HardwareException, InterruptedException { + checkTestScriptWorkFlag(); testScriptWorkFlag = true; reactionPlatesTransmitCtrl.checkBeforeMoveTrunable(); reactionPlatesTransmitCtrl.checkBeforeMovePlateBox(); @@ -161,11 +186,50 @@ public class TestScript { reactionPlatesTransmitCtrl.pushPlateQuick(PBCh, index); reactionPlatesTransmitCtrl.pullPlate(index); reactionPlatesTransmitCtrl.dropPlate(); - if (testScriptWorkFlag) { + if (!testScriptWorkFlag) { break; } } testScriptWorkFlag = false; } + @EnginnerPageAction(name = "测试摇匀模组", group = "摇匀模组测试") + public AppRet testSamplePreProcessModule() throws HardwareException, InterruptedException { + checkTestScriptWorkFlag(); + testScriptWorkFlag = true; + + try { + tubeRackMoveCtrl.enterTubeHolder(); + AppRet scanResult = tubeRackMoveCtrl.moveTubeRackToScanPosAndScan(); + if (!scanResult.isSuccess()) { + tubeRackMoveCtrl.ejectTubeHolder(); + return AppRet.message("没有扫到试管架的码", null); + } + if (scanResult.getData().equals("1111\r")) { + tubeRackMoveCtrl.ejectTubeHolder(); + return AppRet.message("不是全血试管架", null); + } + + AppRet isExistTube = tubeRackMoveCtrl.judgeTubeExist(0); + AppRet isHighTube = tubeRackMoveCtrl.moveTubeToAltitJudgXPos(0); + + if (!isExistTube.getData()) { + tubeRackMoveCtrl.ejectTubeHolder(); + return AppRet.message("试管架上没有试管", null); + } + + + samplesPreProcesCtrl.takeTubeAndJudgeTubeExist(isHighTube.getData()); + samplesPreProcesCtrl.shakeTube(50, 5); + samplesPreProcesCtrl.takeTubeCap(); + samplesPreProcesCtrl.pushBackTubeCapAndTakeBakTube(); + tubeRackMoveCtrl.ejectTubeHolder(); + } finally { + testScriptWorkFlag = false; + } + + return AppRet.message("测试完成", null); + + } + } diff --git a/src/main/java/a8k/service/hardware/canbus/A8kModParamInitializer.java b/src/main/java/a8k/service/hardware/canbus/A8kModParamInitializer.java index df05dbf..33a12da 100644 --- a/src/main/java/a8k/service/hardware/canbus/A8kModParamInitializer.java +++ b/src/main/java/a8k/service/hardware/canbus/A8kModParamInitializer.java @@ -68,6 +68,9 @@ public class A8kModParamInitializer implements AppEventListener { canBus.moduleSetReg(MId.PipetteModZM, RegIndex.kret_step_motor_io_trigger_append_distance, 10); canBus.moduleSetReg(MId.IncubatorRotateCtrlM, RegIndex.kret_step_motor_io_trigger_append_distance, 10); + canBus.moduleSetReg(MId.ShakeModGripperYSV, RegIndex.kreg_mini_servo_limit_torque, 700); + + // canBus.moduleSetReg(MId.OptModPullM, RegIndex.kreg_step_motor_run_to_zero_speed, 500); canBus.moduleSetReg(MId.OptModPullM, RegIndex.kreg_step_motor_default_velocity, 2200); diff --git a/src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java b/src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java index f6bf666..c9db525 100644 --- a/src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java +++ b/src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java @@ -35,6 +35,8 @@ public enum A8kEcode { ScanTimeout(30, "扫码超时"),// InfeedOvertimeFail(31, "入料超时"),// OutfeedOvertimeFail(32, "出料超时"),// + TestScripIsRunning(33, "测试脚本正在运行"),// + PasswdError(100, "密码错误"), // UsrNotExitError(101, "用户不存在"), // diff --git a/zhaohe_app.db b/zhaohe_app.db index a611ec39b9280f67ae2f3cf9f95123e65d7c1350..7d6148ec18006cede763e6ecc51cda0a25e2f10a 100644 GIT binary patch delta 644 zcma)&yJ}Qn5XaA+z2NR4o`9VfG#o);nebiayI~{ZD{Lw3cbk_G+*p`8srCs{M_9r( zDe?#w2J#?+g$RCU1@E;fGJtZS!obLg_txZ&SPf{ zVIf94f*AK6GY2v{0}2x$Xzu`hSds9NIZwJHis(2S{ypN9)5dTRQ4wI!3PKhE2#q4C zP-~$&tBI^;^^Pc`ETYXIDax`sWpL3Tpz$jC7|RD#ZWMyE!Hy7`@QtIgHF#8j+)D5< zMc`6qP03gaf&i`u5lJ?dWU$yPLB2N0Y_;S@mdrJ*!`? QkADmt<8 delta 629 zcma)&!Ae{)6o&7;Gb4_d@pi2RD|ew#4kR}x$q8ND?qo02g)2tfPRkGgg|GY{E>8 zH-sW#on;4@dJ8BbgO5gm(Y%zdqliA~Hl-e&6r&B2pNuC|VEYaMIrc!kQy{G-9Y}dC zR7)l$GNRfLlGu|}7W$wypb7yf_yC*&Iz;C}E|T&gDas9D45zaoICswl0Xxf(*ZKU3 zF^;`Jow|%rM{2Jqik+q|nx9SGd~F^ZY<}DxfBLt-JRQx;Z6xjt!EM}4hTt2@{u>() y!R0olMniHNLDk7