From 8e09cbfc3d8977d9e56bee0687a3776611677fbd Mon Sep 17 00:00:00 2001 From: sige Date: Thu, 25 Jan 2024 14:40:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E6=B6=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pom.xml | 15 +++ .../graphiteDigesterBg/diframe/DiActiveRecord.java | 4 + .../graphiteDigesterBg/diframe/DiTaskMoveBase.java | 18 ++++ .../diframe/actuator/DiActPeristalticPump.java | 7 ++ .../diframe/mapper/DiActiveRecordMapper.java | 9 ++ .../graphiteDigesterBg/diframe/model/MdbUser.java | 5 + ...MoveMoveTubeRackFromHeatPlateToLiquidPlate.java | 13 +++ .../my/graphiteDigesterBg/task/TaskLiquidAdd.java | 103 +++++++++++++++++++++ src/src/main/resources/application.yml | 7 ++ 9 files changed, 181 insertions(+) create mode 100644 src/src/main/java/com/my/graphiteDigesterBg/diframe/DiActiveRecord.java create mode 100644 src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskMoveBase.java create mode 100644 src/src/main/java/com/my/graphiteDigesterBg/diframe/mapper/DiActiveRecordMapper.java create mode 100644 src/src/main/java/com/my/graphiteDigesterBg/diframe/model/MdbUser.java create mode 100644 src/src/main/java/com/my/graphiteDigesterBg/move/MoveMoveTubeRackFromHeatPlateToLiquidPlate.java create mode 100644 src/src/main/java/com/my/graphiteDigesterBg/task/TaskLiquidAdd.java diff --git a/src/pom.xml b/src/pom.xml index a7335ef..93797ca 100644 --- a/src/pom.xml +++ b/src/pom.xml @@ -38,6 +38,21 @@ snakeyaml 1.33 + + org.xerial + sqlite-jdbc + 3.43.2.0 + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 3.0.2 + + + org.flywaydb + flyway-core + 9.21.0 + diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiActiveRecord.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiActiveRecord.java new file mode 100644 index 0000000..2f0c1e4 --- /dev/null +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiActiveRecord.java @@ -0,0 +1,4 @@ +package com.my.graphiteDigesterBg.diframe; +abstract public class DiActiveRecord { + +} diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskMoveBase.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskMoveBase.java new file mode 100644 index 0000000..9c8826a --- /dev/null +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskMoveBase.java @@ -0,0 +1,18 @@ +package com.my.graphiteDigesterBg.diframe; +abstract public class DiTaskMoveBase { + // device + private DiDevice device; + + // set device + public void setDevice(DiDevice device) { + this.device = device; + } + + // get device + public DiDevice getDevice() { + return this.device; + } + + // run + abstract public void run(); +} diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActPeristalticPump.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActPeristalticPump.java index 2175a5d..fbfad09 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActPeristalticPump.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/actuator/DiActPeristalticPump.java @@ -2,6 +2,13 @@ package com.my.graphiteDigesterBg.diframe.actuator; import com.my.graphiteDigesterBg.diframe.DiActuatorBase; import com.my.graphiteDigesterBg.diframe.DiCommand; public class DiActPeristalticPump extends DiActuatorBase { + // volume + public void pump(Integer volume) { + // @TODO : 这里要根据配置参数计算 ~~~ + this.call(DiCommand.MOTOR_EASY_MOVE_BY, 100 * volume); + this.waitForFinish(); + } + public void rotate() { this.call(DiCommand.MOTOR_EASY_MOVE_BY, 100 * 30); } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/mapper/DiActiveRecordMapper.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/mapper/DiActiveRecordMapper.java new file mode 100644 index 0000000..3b2d4e6 --- /dev/null +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/mapper/DiActiveRecordMapper.java @@ -0,0 +1,9 @@ +package com.my.graphiteDigesterBg.diframe.mapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; +import java.util.Map; +@Mapper +public interface DiActiveRecordMapper { + @Select("SELECT * FROM ${tableName} WHERE id = #{id}") + Map findById(String tableName, Integer id); +} diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/model/MdbUser.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/model/MdbUser.java new file mode 100644 index 0000000..f8a551b --- /dev/null +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/model/MdbUser.java @@ -0,0 +1,5 @@ +package com.my.graphiteDigesterBg.diframe.model; +import com.my.graphiteDigesterBg.diframe.DiActiveRecord; +public class MdbUser extends DiActiveRecord { + +} diff --git a/src/src/main/java/com/my/graphiteDigesterBg/move/MoveMoveTubeRackFromHeatPlateToLiquidPlate.java b/src/src/main/java/com/my/graphiteDigesterBg/move/MoveMoveTubeRackFromHeatPlateToLiquidPlate.java new file mode 100644 index 0000000..4858bfd --- /dev/null +++ b/src/src/main/java/com/my/graphiteDigesterBg/move/MoveMoveTubeRackFromHeatPlateToLiquidPlate.java @@ -0,0 +1,13 @@ +package com.my.graphiteDigesterBg.move; +import com.my.graphiteDigesterBg.diframe.DiDevice; +import com.my.graphiteDigesterBg.diframe.DiTaskMoveBase; +public class MoveMoveTubeRackFromHeatPlateToLiquidPlate extends DiTaskMoveBase { + // slot index + public Integer slotIndex; + + // execute + @Override + public void run() { + + } +} diff --git a/src/src/main/java/com/my/graphiteDigesterBg/task/TaskLiquidAdd.java b/src/src/main/java/com/my/graphiteDigesterBg/task/TaskLiquidAdd.java new file mode 100644 index 0000000..7630882 --- /dev/null +++ b/src/src/main/java/com/my/graphiteDigesterBg/task/TaskLiquidAdd.java @@ -0,0 +1,103 @@ +package com.my.graphiteDigesterBg.task; +import com.my.graphiteDigesterBg.MyDevice; +import com.my.graphiteDigesterBg.diframe.DiTaskBase; +import com.my.graphiteDigesterBg.diframe.Task; +import com.my.graphiteDigesterBg.diframe.actuator.DiActMotor; +import com.my.graphiteDigesterBg.diframe.actuator.DiActPeristalticPump; +import com.my.graphiteDigesterBg.diframe.actuator.DiActServo; +import com.my.graphiteDigesterBg.move.MoveMoveTubeRackFromHeatPlateToLiquidPlate; +import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlot; +import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlotManager; +@Task(name="LiquidAdd") +public class TaskLiquidAdd extends DiTaskBase { + // slot index + public Integer slotIndex; + // liquid index + public Integer liquidIndex; + // liquid volume + public Integer liquidVolume; + // shake times + public Integer shakeTimes; + + @Override + public void run() { + ResHeatingTubeRackSlotManager heatingSlotMan = this.getResourceManager(ResHeatingTubeRackSlotManager.class); + ResHeatingTubeRackSlot slot = heatingSlotMan.getSlotByIndex(this.slotIndex); + + DiActMotor heatPlateMotor = this.getActuator(MyDevice.ACT_HEAT_PLATE_MOTOR, DiActMotor.class); + DiActMotor transLrMotor = this.getActuator(MyDevice.ACT_TRANSFER_LR_MOTOR, DiActMotor.class); + DiActMotor transUdMotor = this.getActuator(MyDevice.ACT_TRANSFER_UD_MOTOR, DiActMotor.class); + DiActServo transferClipServo = this.getActuator(MyDevice.ACT_TRANSFER_CLIP_SERVO, DiActServo.class); + DiActMotor liquidPlateMotor = this.getActuator(MyDevice.ACT_LIQUID_PLATE_MOTOR, DiActMotor.class); + DiActMotor liquidMotor = this.getActuator(MyDevice.ACT_LIQUID_MOTOR, DiActMotor.class); + + // move tube rack from heat plate to liquid plate + var moveTubeRackFromHeatPlateToLiquidPlate = new MoveMoveTubeRackFromHeatPlateToLiquidPlate(); + moveTubeRackFromHeatPlateToLiquidPlate.setDevice(this.getDevice()); + moveTubeRackFromHeatPlateToLiquidPlate.slotIndex = this.slotIndex; + moveTubeRackFromHeatPlateToLiquidPlate.run(); + +// // 加热盘转盘移动到取放架位置 +// heatPlateMotor.moveTo(8580); // @TODO : 这里要根据位置计算 ~~~ +// // 打开试管架盖 +// slot.coverOpen(); + // 搬运上升到顶部 + transUdMotor.moveTo(1300); +// // 搬运移动到加热取架位置 +// transLrMotor.moveTo(1620); +// // 搬运下降到取架位置 +// transUdMotor.moveTo(130); +// // 打开试管架夹爪 +// transferClipServo.moveTo(2670); +// // 搬运上升到顶部 +// transUdMotor.moveTo(1300); +// // 搬运移动到加液取放架位置 +// transLrMotor.moveTo(365); +// // 加液转盘移动到取放位置 +// liquidPlateMotor.moveTo(642); +// // 搬运下降到放架位置 +// transUdMotor.moveTo(540); +// // 关闭试管架夹爪 +// transferClipServo.moveTo(2073); +// // 搬运上升到顶部 +// transUdMotor.moveTo(1300); +// // 关闭试管架盖 +// slot.coverClose(); + // 搬运移动到就绪位置 + transLrMotor.moveTo(1000); + + String liquidPeristalticPumpKey = "liquidPeristalticPump_" + this.liquidIndex; + DiActPeristalticPump liquidPump = this.getActuator(liquidPeristalticPumpKey, DiActPeristalticPump.class); + + // 外圈试管加液 + // 加液机械臂移动到加液位置 +// liquidMotor.moveTo(1100); +// for ( int i=0; i<4; i++ ) { +// // 加液转盘移动到加液位置 +// liquidPlateMotor.moveTo(800 + 2500 * i); +// // 加液指定数量 +// liquidPump.pump(this.liquidVolume); +// } + // 内圈试管加液 + // 加液转盘移动到加液位置 + liquidPlateMotor.moveTo(800); + for ( int i=0; i<4; i++ ) { + // 加液转盘移动到加液位置 + liquidPlateMotor.moveTo(800 + 2500 * i); + // 加液指定数量 + liquidPump.pump(this.liquidVolume); + } + liquidMotor.moveTo(0); + + // 加液盘摇匀 + for ( int i=0; i