Browse Source

update

tags/v0
zhaohe 10 months ago
parent
commit
5fedb744a0
  1. BIN
      app.db
  2. 31
      src/main/java/a8k/service/app/devicedriver/calibration/HbotTipPosCalibration.java
  3. 43
      src/main/java/a8k/service/app/devicedriver/calibration/ReactionPlatesTransmitControlerCalibration.java
  4. 1
      src/main/java/a8k/service/app/devicedriver/ctrl/HbotControler.java
  5. 1
      src/main/java/a8k/service/app/devicedriver/pos/HbotConsumablePosMgr.java
  6. 29
      src/main/java/a8k/service/app/devicedriver/pos/HbotFixPosMgr.java
  7. 2
      src/main/java/a8k/service/db/LowerDeviceParameterDBService.java

BIN
app.db

31
src/main/java/a8k/service/app/devicedriver/calibration/HbotTipPosCalibration.java

@ -10,6 +10,7 @@ import a8k.service.app.devicedriver.basectrl.HbotModule;
import a8k.service.app.devicedriver.basectrl.PipetteCtrlModule; import a8k.service.app.devicedriver.basectrl.PipetteCtrlModule;
import a8k.service.app.devicedriver.ctrl.HbotControler; import a8k.service.app.devicedriver.ctrl.HbotControler;
import a8k.service.app.devicedriver.pos.HbotConsumablePosMgr; import a8k.service.app.devicedriver.pos.HbotConsumablePosMgr;
import a8k.service.app.devicedriver.pos.HbotFixPosMgr;
import a8k.type.*; import a8k.type.*;
import a8k.type.cfg.Pos2d; import a8k.type.cfg.Pos2d;
import a8k.type.cfg.Pos3d; import a8k.type.cfg.Pos3d;
@ -44,6 +45,8 @@ public class HbotTipPosCalibration {
HbotControler hbotControler; HbotControler hbotControler;
@Resource @Resource
HbotConsumablePosMgr hbotConsumablePosMgr; HbotConsumablePosMgr hbotConsumablePosMgr;
@Resource
HbotFixPosMgr hbotFixPosMgr;
Boolean stopFlag = false; Boolean stopFlag = false;
@ -198,11 +201,26 @@ public class HbotTipPosCalibration {
} }
@ExtApiFn(name = "标定.丢Tip坐标", group = "标定.丢Tip坐标", order = 30)
public void calibrateDropTipPos() throws AppException {
enableModule();
pipetteCtrlModule.zMotorMeasureDistance();
hbotFixPosMgr.setDropTipPos(new Pos3d(hbotModule.readPos().x, hbotModule.readPos().y, pipetteCtrlModule.zMotorReadMeasureDistanceResult()));
disableModule();
}
// @ExtApiFn(name = "标定.滴液坐标", group = "标定.滴液坐标", order = 40)
// public void calibrateDropLiquidPos() throws AppException {
// enableModule();
// pipetteCtrlModule.zMotorMeasureDistance();
// hbotFixPosMgr.setDropLiquidPos(new Pos3d(hbotModule.readPos().x, hbotModule.readPos().y, pipetteCtrlModule.zMotorReadMeasureDistanceResult()));
// disableModule();
// }
// //
// 校验 // 校验
// //
@ExtApiFn(name = "校验Tip坐标", group = "校验", order = 300)
@ExtApiFn(name = "校验Tip坐标", group = "校验", order = 300)
public void testTakeTip(TipGroup tipGroup) throws AppException { public void testTakeTip(TipGroup tipGroup) throws AppException {
resetStopFlag(); resetStopFlag();
enableModule(); enableModule();
@ -213,6 +231,17 @@ public class HbotTipPosCalibration {
} }
} }
@ExtApiFn(name = "校验丢Tip", group = "校验", order = 301)
public void testDropTipPos() throws AppException {
hbotControler.dropTip();
}
// @ExtApiFn(name = "校验滴液位置", group = "校验", order = 302)
// public void testDropLiquidPos() throws AppException {
// hbotControler.moveToDropLiquidPos();
// }
@ExtApiFn(name = "停止校验", group = "校验", order = 304) @ExtApiFn(name = "停止校验", group = "校验", order = 304)
public void stopTest() throws AppException { public void stopTest() throws AppException {
setStopFlag(); setStopFlag();

43
src/main/java/a8k/service/app/devicedriver/calibration/ReactionPlatesTransmitControlerCalibration.java

@ -3,15 +3,17 @@ package a8k.service.app.devicedriver.calibration;
import a8k.extapi_controler.pagecontrol.ExtApiTabConfig; import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.extapi_controler.utils.ExtApiFn; import a8k.extapi_controler.utils.ExtApiFn;
import a8k.extapi_controler.utils.ExtApiTab; import a8k.extapi_controler.utils.ExtApiTab;
import a8k.service.app.devicedriver.basectrl.HbotModule;
import a8k.service.app.devicedriver.basectrl.MiniServoControler; import a8k.service.app.devicedriver.basectrl.MiniServoControler;
import a8k.service.app.devicedriver.basectrl.PipetteCtrlModule;
import a8k.service.app.devicedriver.basectrl.StepMotorControler; import a8k.service.app.devicedriver.basectrl.StepMotorControler;
import a8k.service.app.devicedriver.basectrl.type.StepMotorMId; import a8k.service.app.devicedriver.basectrl.type.StepMotorMId;
import a8k.service.app.devicedriver.ctrl.HbotControler;
import a8k.service.app.devicedriver.ctrl.ReactionPlatesTransmitCtrl; import a8k.service.app.devicedriver.ctrl.ReactionPlatesTransmitCtrl;
import a8k.service.app.devicedriver.pos.OptModulePosMgr;
import a8k.service.app.devicedriver.pos.PlatesBoxPosMgr;
import a8k.service.app.devicedriver.pos.TurntablePosMgr;
import a8k.service.app.devicedriver.pos.*;
import a8k.type.ConsumableGroup; import a8k.type.ConsumableGroup;
import a8k.type.IncubatorPos; import a8k.type.IncubatorPos;
import a8k.type.cfg.Pos3d;
import a8k.type.exception.AppException; import a8k.type.exception.AppException;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -37,15 +39,31 @@ public class ReactionPlatesTransmitControlerCalibration {
@Resource @Resource
ReactionPlatesTransmitCtrl reactionPlatesTransmitCtrl; ReactionPlatesTransmitCtrl reactionPlatesTransmitCtrl;
@Resource
PipetteCtrlModule pipetteCtrlModule;
@Resource
HbotModule hbotModule;
@Resource
HbotControler hbotControler;
@Resource
HbotFixPosMgr hbotFixPosMgr;
//基础工具 //基础工具
@ExtApiFn(name = "归零", group = "测试工具", order = 1) @ExtApiFn(name = "归零", group = "测试工具", order = 1)
public void deviceReset() throws AppException { public void deviceReset() throws AppException {
enableModule(); enableModule();
pipetteCtrlModule.zMotorMoveZeroBlock();
hbotModule.moveToZeroBlock();
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.PlatesBoxPusherM, overtime); stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.PlatesBoxPusherM, overtime);
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.PlatesBoxYM, overtime); stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.PlatesBoxYM, overtime);
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModPullM, overtime); stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModPullM, overtime);
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModScannerM, overtime); stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModScannerM, overtime);
stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.IncubatorRotateCtrlM, overtime); stepMotorControler.stepMotorEasyMoveToZeroBlock(StepMotorMId.IncubatorRotateCtrlM, overtime);
} }
@ExtApiFn(name = "使能相关模块", group = "测试工具", order = 2) @ExtApiFn(name = "使能相关模块", group = "测试工具", order = 2)
@ -55,6 +73,9 @@ public class ReactionPlatesTransmitControlerCalibration {
stepMotorControler.stepMotorEnable(StepMotorMId.OptModPullM, 1); stepMotorControler.stepMotorEnable(StepMotorMId.OptModPullM, 1);
stepMotorControler.stepMotorEnable(StepMotorMId.OptModScannerM, 1); stepMotorControler.stepMotorEnable(StepMotorMId.OptModScannerM, 1);
stepMotorControler.stepMotorEnable(StepMotorMId.IncubatorRotateCtrlM, 1); stepMotorControler.stepMotorEnable(StepMotorMId.IncubatorRotateCtrlM, 1);
pipetteCtrlModule.zMotorEnable(1);
hbotModule.enable(1);
} }
@ExtApiFn(name = "失能相关模块", group = "测试工具", order = 3) @ExtApiFn(name = "失能相关模块", group = "测试工具", order = 3)
@ -64,6 +85,9 @@ public class ReactionPlatesTransmitControlerCalibration {
stepMotorControler.stepMotorEnable(StepMotorMId.OptModPullM, 0); stepMotorControler.stepMotorEnable(StepMotorMId.OptModPullM, 0);
stepMotorControler.stepMotorEnable(StepMotorMId.OptModScannerM, 0); stepMotorControler.stepMotorEnable(StepMotorMId.OptModScannerM, 0);
stepMotorControler.stepMotorEnable(StepMotorMId.IncubatorRotateCtrlM, 0); stepMotorControler.stepMotorEnable(StepMotorMId.IncubatorRotateCtrlM, 0);
pipetteCtrlModule.zMotorEnable(0);
hbotModule.enable(0);
} }
@ExtApiFn(name = "读取所有设定值", group = "测试工具", order = 5) @ExtApiFn(name = "读取所有设定值", group = "测试工具", order = 5)
@ -106,6 +130,16 @@ public class ReactionPlatesTransmitControlerCalibration {
return dropLiquidPos0; return dropLiquidPos0;
} }
@ExtApiFn(name = "标定", group = "HbotTip滴定位.校准", order = 104)
public Pos3d Hbot_dropLiquidPosCalibration() throws AppException {
enableModule();
pipetteCtrlModule.zMotorMeasureDistance();
var pos = new Pos3d(hbotModule.readPos().x, hbotModule.readPos().y, pipetteCtrlModule.zMotorReadMeasureDistanceResult());
hbotFixPosMgr.setDropLiquidPos(pos);
disableModule();
return pos;
}
// //
// 板夹仓位置 // 板夹仓位置
@ -170,9 +204,10 @@ public class ReactionPlatesTransmitControlerCalibration {
// 校验 // 校验
// //
@ExtApiFn(name = "孵育盘移动到点滴位", group = "校验", order = 1000)
@ExtApiFn(name = "滴定", group = "校验", order = 1000)
public void turntableMoveDropPos(IncubatorPos pos) throws AppException { public void turntableMoveDropPos(IncubatorPos pos) throws AppException {
reactionPlatesTransmitCtrl.trunableMoveToDropLiquidPos(pos); reactionPlatesTransmitCtrl.trunableMoveToDropLiquidPos(pos);
hbotControler.moveToDropLiquidPos();
} }
@ExtApiFn(name = "孵育盘移动到拉板位", group = "校验", order = 1001) @ExtApiFn(name = "孵育盘移动到拉板位", group = "校验", order = 1001)

1
src/main/java/a8k/service/app/devicedriver/ctrl/HbotControler.java

@ -103,4 +103,5 @@ public class HbotControler {
} }
} }

1
src/main/java/a8k/service/app/devicedriver/pos/HbotConsumablePosMgr.java

@ -128,6 +128,7 @@ public class HbotConsumablePosMgr {
} }
public LittleBottleConsumablePosInfo getLittleBufferGroupPosInfo() { public LittleBottleConsumablePosInfo getLittleBufferGroupPosInfo() {
LittleBottleConsumablePosInfo info = new LittleBottleConsumablePosInfo(); LittleBottleConsumablePosInfo info = new LittleBottleConsumablePosInfo();
info.g0_000 = posReader.getPos(HbotConsumablePosParam.LittleBufferGroup0_000Pos, Pos3d.class); info.g0_000 = posReader.getPos(HbotConsumablePosParam.LittleBufferGroup0_000Pos, Pos3d.class);

29
src/main/java/a8k/service/app/devicedriver/pos/HbotFixPosMgr.java

@ -4,6 +4,7 @@ import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.extapi_controler.utils.ExtApiParamsTab; import a8k.extapi_controler.utils.ExtApiParamsTab;
import a8k.extapi_controler.utils.ExtApiTab; import a8k.extapi_controler.utils.ExtApiTab;
import a8k.service.db.LowerDeviceParameterDBService; import a8k.service.db.LowerDeviceParameterDBService;
import a8k.service.db.type.Parameter;
import a8k.service.db.utils.PosParameterReader; import a8k.service.db.utils.PosParameterReader;
import a8k.type.cfg.Pos3d; import a8k.type.cfg.Pos3d;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
@ -12,6 +13,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List;
/** /**
* HBOT二维码扫描坐标参数 * HBOT二维码扫描坐标参数
*/ */
@ -22,8 +25,14 @@ public class HbotFixPosMgr {
static final Logger logger = LoggerFactory.getLogger(HbotFixPosMgr.class); static final Logger logger = LoggerFactory.getLogger(HbotFixPosMgr.class);
enum Pos { enum Pos {
DropTipPos,
DropLiquidPos,
DropTipPos("丢TIP位置"),
DropLiquidPos("滴液位置"),
;
public final String chName;
Pos(String chName) {
this.chName = chName;
}
} }
; ;
@ -36,6 +45,11 @@ public class HbotFixPosMgr {
@PostConstruct @PostConstruct
void initialize() { void initialize() {
posReader = lowerDeviceParameterDBService.getReader(this.getClass()); posReader = lowerDeviceParameterDBService.getReader(this.getClass());
for (Pos pos : Pos.values()) {
posReader.setParamChName(pos, pos.chName);
}
Integer paraVersion = posReader.getVersion(); Integer paraVersion = posReader.getVersion();
if (!nowParaVersion.equals(paraVersion)) { if (!nowParaVersion.equals(paraVersion)) {
paramReset(); paramReset();
@ -49,6 +63,10 @@ public class HbotFixPosMgr {
posReader.updatePos(Pos.DropLiquidPos.name(), new Pos3d(0, 0, 0)); posReader.updatePos(Pos.DropLiquidPos.name(), new Pos3d(0, 0, 0));
} }
public List<Parameter> getParams() {
return posReader.getParams();
}
public Pos3d getDropTipPos() { public Pos3d getDropTipPos() {
return posReader.getPos(Pos.DropTipPos, Pos3d.class); return posReader.getPos(Pos.DropTipPos, Pos3d.class);
} }
@ -57,5 +75,12 @@ public class HbotFixPosMgr {
return posReader.getPos(Pos.DropLiquidPos, Pos3d.class); return posReader.getPos(Pos.DropLiquidPos, Pos3d.class);
} }
public void setDropTipPos(Pos3d pos) {
posReader.updatePos(Pos.DropTipPos.name(), pos);
}
public void setDropLiquidPos(Pos3d pos) {
posReader.updatePos(Pos.DropLiquidPos.name(), pos);
}
} }

2
src/main/java/a8k/service/db/LowerDeviceParameterDBService.java

@ -47,7 +47,7 @@ public class LowerDeviceParameterDBService {
parameter.chName = chName; parameter.chName = chName;
ZSqliteJdbcHelper.addObj(jdbcTemplate, tableName, tClass, parameter); ZSqliteJdbcHelper.addObj(jdbcTemplate, tableName, tClass, parameter);
} else { } else {
if (parameter.chName.equals(chName)) {
if (parameter.chName != null && parameter.chName.equals(chName)) {
return; return;
} }
parameter.chName = chName; parameter.chName = chName;

Loading…
Cancel
Save