From 055068b69337a12b678a97e4dbabfe2d7361db35 Mon Sep 17 00:00:00 2001 From: sige Date: Tue, 6 Feb 2024 17:28:20 +0800 Subject: [PATCH] ~~ --- .../my/graphiteDigesterBg/diframe/DiCommand.java | 1 + .../my/graphiteDigesterBg/diframe/DiDeviceIO.java | 1 + .../diframe/DiDeviceIOManager.java | 7 +++ .../diframe/actuator/DiActMotor.java | 25 ++++++++- .../my/graphiteDigesterBg/move/MoveLiquidAdd.java | 11 +++- ...MoveMoveTubeRackFromHeatPlateToLiquidPlate.java | 16 ++++-- ...MoveMoveTubeRackFromLiquidPlateToHeatPlate.java | 16 ++++-- .../move/MoveTubeToErrorRackSlot.java | 21 ++++++++ .../resource/ResHeatingTubeRackSlot.java | 4 +- .../my/graphiteDigesterBg/task/TaskHeating.java | 9 +++- .../task/TaskSampleMoveToHeatPlate.java | 32 ++++++++++++ .../task/TaskSampleMoveToLiquidPlate.java | 22 ++++++++ .../my/graphiteDigesterBg/task/TaskStartReset.java | 11 ++-- .../task/TaskTubeMoveToErrorSlot.java | 21 ++++++-- src/src/main/resources/application.yml | 2 +- src/src/main/resources/device.yml | 59 ++++++++++++++++++---- src/web/src/pages/main/contents/Operation.vue | 2 + .../src/pages/main/contents/OperationCamera.vue | 6 +++ .../main/contents/OperationSampleTakeShot.vue | 45 +++++++++++++++++ 19 files changed, 278 insertions(+), 33 deletions(-) create mode 100644 src/src/main/java/com/my/graphiteDigesterBg/task/TaskSampleMoveToHeatPlate.java create mode 100644 src/src/main/java/com/my/graphiteDigesterBg/task/TaskSampleMoveToLiquidPlate.java create mode 100644 src/web/src/pages/main/contents/OperationSampleTakeShot.vue diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java index 62b6501..f1258d0 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java @@ -5,6 +5,7 @@ public enum DiCommand { MODULE_SET_REG("module_set_reg", 0x0105), MODULE_GET_REG("module_get_reg", 0x0106), MODULE_READ_IO("module_readio", 0x0107), + MODULE_WRITE_IO("module_writeio", 0x0108), MODULE_ENABLE("module_enable", 0x0114), MOTOR_EASY_MOVE_BY("motor_easy_move_by", 0x0212), MOTOR_EASY_MOVE_TO("motor_easy_move_to", 0x0213), diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIO.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIO.java index b5d15e2..49e12e5 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIO.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIO.java @@ -3,4 +3,5 @@ public class DiDeviceIO { protected String key; protected Integer mid; protected Integer index; + protected String type; } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIOManager.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIOManager.java index 8024f89..19e368e 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIOManager.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIOManager.java @@ -31,6 +31,7 @@ public class DiDeviceIOManager { io.key = (String)item.get("key"); io.mid = (Integer)item.get("mid"); io.index = (Integer)item.get("index"); + io.type = (String)item.get("type"); this.ios.put(io.key, io); } } @@ -43,4 +44,10 @@ public class DiDeviceIOManager { value = (value >> io.index) & 0x01; return value; } + + // set io value + public void setValue( String key, Integer value ) { + DiDeviceIO io = this.ios.get(key); + this.device.call(DiCommand.MODULE_WRITE_IO, io.mid, io.index, value); + } } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActMotor.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActMotor.java index 0808cba..438abf7 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActMotor.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActMotor.java @@ -9,9 +9,9 @@ public class DiActMotor extends DiActuatorBase { // one circle pulse denominator protected Integer oneCirclePulseDenominator; // default velocity - protected Integer defaultVelocity; + public Integer defaultVelocity; // default acc - protected Integer defaultAcc; + public Integer defaultAcc; // default dec protected Integer defaultDec; // run to zero speed @@ -68,6 +68,27 @@ public class DiActMotor extends DiActuatorBase { this.activeConfig(); } + // set velocity + public void setVelocity( Integer velocity ) { + this.log("setVelocity({})", velocity); + this.call(DiCommand.MODULE_SET_REG, 1054, velocity); + this.activeConfig(); + } + + // set acc + public void setAcc( Integer acc ) { + this.log("setAcc({})", acc); + this.call(DiCommand.MODULE_SET_REG, 1055, acc); + this.activeConfig(); + } + + // set dec + public void setDec( Integer dec ) { + this.log("setDec({})", dec); + this.call(DiCommand.MODULE_SET_REG, 1056, dec); + this.activeConfig(); + } + // dump register public void dumpReg() { this.log("Reg @{} => {}", this.key, this.type, this.name, 1051, this.getRegValue(1051)); diff --git a/src/src/main/java/com/my/graphiteDigesterBg/move/MoveLiquidAdd.java b/src/src/main/java/com/my/graphiteDigesterBg/move/MoveLiquidAdd.java index 3623fe4..875e3b3 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/move/MoveLiquidAdd.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/move/MoveLiquidAdd.java @@ -41,11 +41,18 @@ public class MoveLiquidAdd extends DiTaskMoveBase { liquidMotor.moveTo("LiquidArmStandby"); - // 加液盘摇匀 + // 摇匀 + liquidPlateMotor.moveTo(0); + liquidPlateMotor.setVelocity(300); + liquidPlateMotor.setAcc(10); for ( int i=0; i tubeIndexList; @@ -17,6 +16,22 @@ public class TaskTubeMoveToErrorSlot extends DiTaskBase { var slotMan = this.getResourceManager(ResHeatingTubeRackSlotManager.class); var errorSlot = slotMan.getErrorSlot(); var emptyTubeIndexList = errorSlot.allocEmptyTubeIndexes(this.tubeIndexList.size()); + Integer slotIndex = null; + for ( var slot : slotMan.getSlots() ) { + if ( "LIQUID_PLATE".equals(slot.rackPosition) ) { + slotIndex = slot.index; + break; + } + } + if ( slotIndex == null ) { + throw new RuntimeException("liquid plate slot not found"); + } + + // move tube rack from liquid plate to heat plate + var move = new MoveMoveTubeRackFromLiquidPlateToHeatPlate(); + move.setDevice(this.getDevice()); + move.slotIndex = slotIndex; + move.run(); for ( int i=0; i + @@ -181,6 +182,7 @@ import { onMounted, ref, onUnmounted } from 'vue'; import ApiClient from '@/utils/ApiClient.js'; import OperationCamera from './OperationCamera.vue'; import OperationSampleAdd from './OperationSampleAdd.vue'; +import OperationSampleTakeShot from './OperationSampleTakeShot.vue'; /** @var {Object} */ const sampleTakeout = ref({enable:false,slotIndex:0}); /** @var {Object} */ diff --git a/src/web/src/pages/main/contents/OperationCamera.vue b/src/web/src/pages/main/contents/OperationCamera.vue index 603acf7..f7b4b79 100644 --- a/src/web/src/pages/main/contents/OperationCamera.vue +++ b/src/web/src/pages/main/contents/OperationCamera.vue @@ -10,6 +10,7 @@
+
@@ -112,6 +113,11 @@ async function actionTubeMoveToErrorSlot() { tubeIndexList: errorTubes.value }); } + +// 移动样本到加热板 +async function actionTakeShotCancel() { + await client.taskAppend('SampleMoveToHeatPlate'); +}