Browse Source

update

tags/v0
zhaohe 9 months ago
parent
commit
391b273403
  1. 8
      src/main/java/a8k/controler/api/v1/app/assistant/ApiRetTestControler.java
  2. 11
      src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java
  3. 39
      src/main/java/a8k/service/app/devicectrl/param/calibration/HbotLittleBSPosCalibration.java
  4. 47
      src/main/java/a8k/service/app/devicectrl/param/calibration/HbotProbeSubstancePosCalibration.java
  5. 9
      src/main/java/a8k/service/app/devicectrl/param/ext_param_mgr/HbotConsumableParamMgr.java
  6. 2
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/Hbot2DCodeScanParamMgr.java
  7. 10
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotFixedPosParamMgr.java
  8. 2
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLargeBottleBSPosMgr.java
  9. 9
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLittleBSPosMgr.java
  10. 29
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotProbeSubstancePosMgr.java
  11. 2
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotSamplePosParamMgr.java
  12. 13
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotTipPosMgr.java
  13. 2
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java
  14. 2
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleParamsMgr.java
  15. 4
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/PipetteGunLLDParamMgr.java
  16. 2
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/PipetteGunLLFParamMgr.java
  17. 12
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/PlatesBoxPosParamMgr.java
  18. 2
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/TemperatureCtrlParamMgr.java
  19. 21
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/TubeFeedingModuleParamMgr.java
  20. 8
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/TubePreProcesPosParamMgr.java
  21. 20
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/TurntablePosParamMgr.java
  22. 4
      src/main/java/a8k/service/app/devicectrl/param/param_mgr/base/ParamMgr.java
  23. 42
      src/main/java/a8k/service/app/devicectrl/param/type/Hbot2DCodeScanPos.java
  24. 16
      src/main/java/a8k/service/app/devicectrl/param/type/HbotLargeBottleBSPos.java
  25. 28
      src/main/java/a8k/service/app/devicectrl/param/type/HbotLittleBSPos.java
  26. 30
      src/main/java/a8k/service/app/devicectrl/param/type/HbotProbeSubstancePos.java
  27. 41
      src/main/java/a8k/service/app/devicectrl/param/type/HbotSamplePos.java
  28. 27
      src/main/java/a8k/service/app/devicectrl/param/type/HbotTipPosParam.java
  29. 20
      src/main/java/a8k/service/app/devicectrl/param/type/OptModuleExtParam.java
  30. 10
      src/main/java/a8k/service/app/devicectrl/param/type/OptModuleParam.java
  31. 10
      src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLDThresholdParam.java
  32. 8
      src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLDTypeParam.java
  33. 20
      src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLFParam.java
  34. 8
      src/main/java/a8k/service/app/devicectrl/param/type/TemperatureCtrlParam.java
  35. 11
      src/main/java/a8k/service/app/devicectrl/param/type/TubePreProcessZAxisPos.java
  36. 2
      src/main/java/a8k/service/app/devicectrl/script/DeviceCtrlScripter.java
  37. 63
      src/main/java/a8k/service/dao/LowerDeviceParameterDao.java
  38. 4
      src/main/java/a8k/service/dao/utils/PosParameterReader.java
  39. 18
      src/main/java/a8k/type/TubeFeedingModulePos.java
  40. 8
      src/main/java/a8k/type/TubeFeedingModuleSetting.java
  41. 10
      src/main/java/a8k/type/TubePreProcessGripperPos.java
  42. 8
      src/main/java/a8k/type/TubePreProcessTubeClamp.java
  43. 8
      src/main/java/a8k/type/TubePreProcessYPos.java
  44. 4
      src/main/java/a8k/unittest/TestBeforeRun.java
  45. 2
      src/main/java/a8k/utils/ProjProcessContextUtils.java
  46. BIN
      src/main/resources/app.db

8
src/main/java/a8k/controler/api/v1/app/assistant/ApiRetTestControler.java

@ -54,9 +54,17 @@ public class ApiRetTestControler {
@Operation(description = "获取试管错误,此错误发生在试管处理过程中(扫描,脱帽,盖帽,摇匀),此错误,需要提示用户,是第几个试管发生了错误")
@PostMapping("getTubeError")
public ApiV1Ret<AETubeError> getTubeError() {
try {
throw new AppException(A8kEcode.APPE_A8K_PROJ_INFO_IS_ERROR);
} catch (AppException e) {
log.error("",e);
}
return ApiV1Ret.fail(//
new AETubeError(A8kEcode.APPE_A8K_PROJ_UNSUPPORTED, 6)
);
}
}

11
src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java

@ -120,7 +120,7 @@ public class HbotCtrlService {
hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getLittleBufferPiercePos(group, off));
}
public void moveToLittleBufferSamplePosEnd(ConsumableGroup group, Integer off) throws AppException {
public void moveToLittleBufferSamplePos(ConsumableGroup group, Integer off) throws AppException {
hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getLittleBufferSamplePosEnd(group, off));
}
@ -128,10 +128,15 @@ public class HbotCtrlService {
// hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getProbeSubstanceSamplePos(group, off));
// }
public void moveToProbeSubstanceSamplePosEnd(ConsumableGroup group, Integer off) throws AppException {
hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getProbeSubstanceSamplePosEnd(group, off));
public void moveToProbeSubstanceSamplePos(ConsumableGroup group, Integer off) throws AppException {
hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getProbeSubstanceSamplePos(group, off));
}
public void moveToProbeSubstancePiercePos(ConsumableGroup group, Integer off) throws AppException {
hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getProbeSubstancePiercePos(group, off));
}
public void moveToLargeBufferPos(ConsumableGroup group) throws AppException {
Pos3d toPos = hbotConsumableParamMgr.getLargeBufferSamplePos(group);
hbotBaseMoveExDriver.hbotMoveTo(toPos);

39
src/main/java/a8k/service/app/devicectrl/param/calibration/HbotLittleBSPosCalibration.java

@ -6,7 +6,6 @@ import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.extapi_controler.utils.ExtApiFn;
import a8k.extapi_controler.utils.ExtApiTab;
import a8k.service.app.devicectrl.exdriver.HbotBaseMoveExDriver;
import a8k.service.app.devicectrl.param.algo.HbotLittleBSCalibrationAlgo;
import a8k.service.app.devicectrl.param.param_mgr.HbotLittleBSPosMgr;
import a8k.service.app.devicectrl.param.type.HbotLittleBSPos;
import a8k.service.app.devicectrl.driver.HbotDriver;
@ -14,7 +13,6 @@ import a8k.service.app.devicectrl.driver.PipetteCtrlDriver;
import a8k.service.app.devicectrl.ctrlservice.HbotCtrlService;
import a8k.type.*;
import a8k.type.cfg.Pos2d;
import a8k.type.cfg.Pos3d;
import a8k.type.exception.AppException;
import a8k.utils.ZJsonHelper;
import com.fasterxml.jackson.databind.node.ObjectNode;
@ -143,16 +141,20 @@ public class HbotLittleBSPosCalibration {
disableModule();
}
@ExtApiFn(name = "校准.小瓶穿孔Z轴位置", group = "标定Z轴", order = 101)
@ExtApiFn(name = "标定.小瓶穿孔Z轴位置", group = "标定Z轴", order = 101)
public void calibrationPierceZPos() throws AppException {calibrationZPos(HbotLittleBSPos.LittleBSPierceZPos, 0);}
// @ExtApiFn(name = "校准.小瓶取样Z轴位置", group = "标定Z轴", order = 102)
// public void calibrationSampleZPos() throws AppException {calibrationZPos(HbotLittleBSPos.LittleBSSampleZPos, 0);}
@ExtApiFn(name = "标定.小瓶缓冲液取样Z轴位置", group = "标定Z轴", order = 104)
public void calibrationLittleBSSampleZPos() throws AppException {
calibrationZPos(HbotLittleBSPos.LittleBSSampleZPos, 0);
}
@ExtApiFn(name = "校准.小瓶缓冲液取样结束Z轴位置", group = "标定Z轴", order = 104)
public void calibrationSampleEndZPos() throws AppException {
//结束位置比设定位置高1mm的余量
calibrationZPos(HbotLittleBSPos.LittleBSSampleEndZPos, -25);
//
// 设置
//
@ExtApiFn(name = "设置.小瓶缓冲液刺破附加距离", group = "标定Z轴", order = 201)
public void setLittleBSPierceXYAppendDistance(Double distance) throws AppException {
hbotLittleBSPosMgr.setParam(HbotLittleBSPos.LittleBSPierceXYAppendDistance, distance);
}
//
@ -165,7 +167,24 @@ public class HbotLittleBSPosCalibration {
pipetteCtrlDriver.zMotorMoveZeroBlock();
for (int i = 0; i < AppConstant.CONSUMABLE_NUM; i++) {
hbotCtrlService.moveToLittleBufferSamplePosEnd(group, i);
hbotCtrlService.moveToLittleBufferSamplePos(group, i);
pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock();
if (checkStopFlag())
break;
}
pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock();
disableModule();
}
@ExtApiFn(name = "校验小瓶缓冲液刺破坐标", group = "校验", order = 302)
public void testMoveToLittleBufferPircePosPos(ConsumableGroup group) throws AppException {
resetStopFlag();
enableModule();
pipetteCtrlDriver.zMotorMoveZeroBlock();
for (int i = 0; i < AppConstant.CONSUMABLE_NUM; i++) {
hbotCtrlService.moveToLittleBufferPiercePos(group, i);
pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock();
if (checkStopFlag())
break;

47
src/main/java/a8k/service/app/devicectrl/param/calibration/HbotProbeSubstancePosCalibration.java

@ -6,18 +6,15 @@ import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.extapi_controler.utils.ExtApiFn;
import a8k.extapi_controler.utils.ExtApiTab;
import a8k.service.app.devicectrl.exdriver.HbotBaseMoveExDriver;
import a8k.service.app.devicectrl.param.algo.HbotLittleBSCalibrationAlgo;
import a8k.service.app.devicectrl.param.param_mgr.HbotProbeSubstancePosMgr;
import a8k.service.app.devicectrl.param.type.HbotProbeSubstancePos;
import a8k.service.app.devicectrl.ctrlservice.HbotCtrlService;
import a8k.service.app.devicectrl.driver.HbotDriver;
import a8k.service.app.devicectrl.driver.PipetteCtrlDriver;
import a8k.service.app.devicectrl.param.type.HbotSamplePos;
import a8k.type.ConsumableGroup;
import a8k.type.LittleBottleConsumablePosInfo;
import a8k.type.LittleBottleConsumableRefPoint;
import a8k.type.LittleBottleConsumableType;
import a8k.type.cfg.Pos2d;
import a8k.type.cfg.Pos3d;
import a8k.type.exception.AppException;
import a8k.utils.ZJsonHelper;
import com.fasterxml.jackson.databind.node.ObjectNode;
@ -147,22 +144,34 @@ public class HbotProbeSubstancePosCalibration {
disableModule();
}
// @ExtApiFn(name = "校准.小瓶取样Z轴位置", group = "标定Z轴", order = 102)
// public void setSampleZPos() throws AppException {setZPos(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, 0);}
// @ExtApiFn(name = "校准.小瓶取样Z轴位置", group = "标定Z轴", order = 102)
// public void setSampleZPos() throws AppException {setZPos(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, 0);}
@ExtApiFn(name = "校准.小瓶缓冲液取样结束Z轴位置", group = "标定Z轴", order = 104)
public void setSampleEndZPos() throws AppException {setZPos(HbotProbeSubstancePos.ProbeSubstanceSampleEndZPos, -25/*2mm*/);}
@ExtApiFn(name = "校准.小瓶缓冲液取样Z轴位置", group = "标定Z轴", order = 104)
public void setSampleZPos() throws AppException {setZPos(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, 0);}
@ExtApiFn(name = "校准.小瓶缓冲液刺破Z轴位置", group = "标定Z轴", order = 105)
public void setPiercePos() throws AppException {setZPos(HbotProbeSubstancePos.ProbeSubstancePierceZPos, 0);}
//
// 设置
//
@ExtApiFn(name = "设置.小瓶缓冲液刺破附加距离", group = "标定Z轴", order = 201)
public void setPierceXYAppendDistance(Double distance) throws AppException {
posMgr.setParam(HbotProbeSubstancePos.ProbeSubstancePierceXYAppendDistance, distance);
}
//
// 校验
//
@ExtApiFn(name = "校验", group = "校验", order = 301)
public void testMoveToLittleBufferPos(ConsumableGroup group) throws AppException {
@ExtApiFn(name = "移动到取样位置", group = "校验", order = 301)
public void testMoveToSamplePos(ConsumableGroup group) throws AppException {
resetStopFlag();
enableModule();
pipetteCtrlDriver.zMotorMoveZeroBlock();
for (int i = 0; i < AppConstant.CONSUMABLE_NUM; i++) {
hbotCtrlService.moveToProbeSubstanceSamplePosEnd(group, i);
hbotCtrlService.moveToProbeSubstanceSamplePos(group, i);
pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock();
if (checkStopFlag())
break;
@ -171,6 +180,22 @@ public class HbotProbeSubstancePosCalibration {
disableModule();
}
@ExtApiFn(name = "移动到刺破位置", group = "校验", order = 302)
public void testMoveToPiercePos(ConsumableGroup group) throws AppException {
resetStopFlag();
enableModule();
pipetteCtrlDriver.zMotorMoveZeroBlock();
for (int i = 0; i < AppConstant.CONSUMABLE_NUM; i++) {
hbotCtrlService.moveToProbeSubstancePiercePos(group, i);
pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock();
if (checkStopFlag())
break;
}
pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock();
disableModule();
}
@ExtApiFn(name = "停止校验", group = "校验", order = 304)
public void stopTest() throws AppException {
setStopFlag();

9
src/main/java/a8k/service/app/devicectrl/param/ext_param_mgr/HbotConsumableParamMgr.java

@ -42,16 +42,19 @@ public class HbotConsumableParamMgr {
}
public Pos3d getProbeSubstanceSamplePos(ConsumableGroup group, Integer off) {
return hbotProbeSubstancePosMgr.getSamplePos(group, off);
}
public Pos3d getProbeSubstanceSamplePosEnd(ConsumableGroup group, Integer off) {
return hbotProbeSubstancePosMgr.getSampleEndPos(group, off);
public Pos3d getProbeSubstancePiercePos(ConsumableGroup group, Integer off) {
return hbotProbeSubstancePosMgr.getPiercePos(group, off);
}
public Pos3d getLargeBufferSamplePos(ConsumableGroup group) {
return hbotLargeBottleBSPosMgr.getSamplePos(group);
}
public Pos3d getLargeBufferSamplePosEnd(ConsumableGroup group){
public Pos3d getLargeBufferSamplePosEnd(ConsumableGroup group) {
return hbotLargeBottleBSPosMgr.getSamplePosEnd(group);
}

2
src/main/java/a8k/service/app/devicectrl/param/param_mgr/Hbot2DCodeScanParamMgr.java

@ -19,7 +19,7 @@ public class Hbot2DCodeScanParamMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (Hbot2DCodeScanPos pos : Hbot2DCodeScanPos.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName,pos.type);
}
}

10
src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotFixedPosParamMgr.java

@ -11,23 +11,25 @@ import org.springframework.stereotype.Component;
* HBOT二维码扫描坐标参数
*/
@Component
public class HbotFixedPosParamMgr extends ParamMgr {
public class HbotFixedPosParamMgr extends ParamMgr {
static final Logger logger = LoggerFactory.getLogger(HbotFixedPosParamMgr.class);
public enum Pos {
DropLiquidPos("滴液位置"),
DropLiquidPos("滴液位置", Pos3d.class),
;
public final String chName;
public final Class<?> type;
Pos(String chName) {
Pos(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}
@PostConstruct
void initialize() {
for (Pos pos : Pos.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName,pos.type);
}
}

2
src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLargeBottleBSPosMgr.java

@ -21,7 +21,7 @@ public class HbotLargeBottleBSPosMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (HbotLargeBottleBSPos param : HbotLargeBottleBSPos.values()) {
setParamChName(param, param.chName);
initParam(param, param.chName, param.type);
}
}
public void setParam(HbotLargeBottleBSPos param, Object val) {

9
src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLittleBSPosMgr.java

@ -21,7 +21,7 @@ public class HbotLittleBSPosMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (HbotLittleBSPos param : HbotLittleBSPos.values()) {
setParamChName(param, param.chName);
initParam(param, param.chName, param.type);
}
}
@ -53,14 +53,17 @@ public class HbotLittleBSPosMgr extends ParamMgr {
}
public Pos3d getPiercePos(ConsumableGroup group, Integer off) {
Pos3d pos = getConsumablePos(group, off);
Pos3d pos = getConsumablePos(group, off);
Double appDistance = getParam(HbotLittleBSPos.LittleBSPierceXYAppendDistance, Double.class);
pos.x += appDistance.intValue();
pos.y += appDistance.intValue();
pos.z = getParam(HbotLittleBSPos.LittleBSPierceZPos, Double.class).intValue();
return pos;
}
public Pos3d getSampleEndPos(ConsumableGroup group, Integer off) {
Pos3d pos = getConsumablePos(group, off);
pos.z = getParam(HbotLittleBSPos.LittleBSSampleEndZPos, Double.class).intValue();
pos.z = getParam(HbotLittleBSPos.LittleBSSampleZPos, Double.class).intValue();
return pos;
}

29
src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotProbeSubstancePosMgr.java

@ -1,10 +1,8 @@
package a8k.service.app.devicectrl.param.param_mgr;
import a8k.service.app.devicectrl.param.param_mgr.base.ParamMgr;
import a8k.service.app.devicectrl.param.type.HbotLittleBSPos;
import a8k.service.app.devicectrl.param.type.HbotProbeSubstancePos;
import a8k.type.ConsumableGroup;
import a8k.type.LittleBottleConsumablePosInfo;
import a8k.type.cfg.Pos2d;
import a8k.type.cfg.Pos3d;
import jakarta.annotation.PostConstruct;
@ -23,7 +21,7 @@ public class HbotProbeSubstancePosMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (HbotProbeSubstancePos param : HbotProbeSubstancePos.values()) {
setParamChName(param, param.chName);
initParam(param, param.chName, param.type);
}
}
@ -54,16 +52,25 @@ public class HbotProbeSubstancePosMgr extends ParamMgr {
return new Pos3d((int) x, (int) y, 0);
}
// public Pos3d getSamplePos(ConsumableGroup group, Integer off) {
// Pos3d pos = getXYPos(group, off);
// pos.z = getParam(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, Double.class).intValue();
// return pos;
// }
// public Pos3d getSamplePos(ConsumableGroup group, Integer off) {
// Pos3d pos = getXYPos(group, off);
// pos.z = getParam(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, Double.class).intValue();
// return pos;
// }
public Pos3d getSampleEndPos(ConsumableGroup group, Integer off) {
Pos3d pos = getXYPos(group, off);
pos.z = getParam(HbotProbeSubstancePos.ProbeSubstanceSampleEndZPos, Double.class).intValue();
public Pos3d getSamplePos(ConsumableGroup group, Integer off) {
Pos3d pos = getXYPos(group, off);
pos.z = getParam(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, Integer.class);
return pos;
}
public Pos3d getPiercePos(ConsumableGroup group, Integer off) {
Pos3d pos = getXYPos(group, off);
pos.z = getParam(HbotProbeSubstancePos.ProbeSubstancePierceZPos, Integer.class);
pos.x += getParam(HbotProbeSubstancePos.ProbeSubstancePierceXYAppendDistance, Double.class).intValue();
pos.y += getParam(HbotProbeSubstancePos.ProbeSubstancePierceXYAppendDistance, Double.class).intValue();
return pos;
}
}

2
src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotSamplePosParamMgr.java

@ -20,7 +20,7 @@ public class HbotSamplePosParamMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (HbotSamplePos pos : HbotSamplePos.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName,pos.type);
}
}

13
src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotTipPosMgr.java

@ -22,7 +22,7 @@ public class HbotTipPosMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (HbotTipPosParam param : HbotTipPosParam.values()) {
setParamChName(param, param.chName);
initParam(param, param.chName, param.type);
}
}
@ -35,9 +35,12 @@ public class HbotTipPosMgr extends ParamMgr {
HbotTipPosParam tip000Pos = null;
HbotTipPosParam tipDxPos = null;
HbotTipPosParam tipDyPos = null;
if(tip000 == null) tip000 = new Pos3d(0, 0, 0);
if(dx == null) dx = 0.0;
if(dy == null) dy = 0.0;
if (tip000 == null)
tip000 = new Pos3d(0, 0, 0);
if (dx == null)
dx = 0.0;
if (dy == null)
dy = 0.0;
if (tipGroup == TipGroup.GROUP0) {
tip000Pos = HbotTipPosParam.TipGroup0_000Pos;
@ -91,7 +94,7 @@ public class HbotTipPosMgr extends ParamMgr {
cfg.tip000 = tip000;
cfg.spaceingX = dx;
cfg.spaceingY = dy;
cfg.tipGroup = tipGroup;
cfg.tipGroup = tipGroup;
return cfg;
}

2
src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java

@ -21,7 +21,7 @@ public class OptModuleExtParamsMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (OptModuleExtParam pos : OptModuleExtParam.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName,pos.type);
}
}

2
src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleParamsMgr.java

@ -19,7 +19,7 @@ public class OptModuleParamsMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (OptModuleParam pos : OptModuleParam.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName,pos.type);
}
}

4
src/main/java/a8k/service/app/devicectrl/param/param_mgr/PipetteGunLLDParamMgr.java

@ -18,10 +18,10 @@ public class PipetteGunLLDParamMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (PipetteGunLLDThresholdParam param : PipetteGunLLDThresholdParam.values()) {
setParamChName(param, param.chName);
initParam(param, param.chName, param.type);
}
for (PipetteGunLLDTypeParam param : PipetteGunLLDTypeParam.values()) {
setParamChName(param, param.chName);
initParam(param, param.chName, param.type);
}
}

2
src/main/java/a8k/service/app/devicectrl/param/param_mgr/PipetteGunLLFParamMgr.java

@ -21,7 +21,7 @@ public class PipetteGunLLFParamMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (PipetteGunLLFParam param : PipetteGunLLFParam.values()) {
setParamChName(param, param.chName);
initParam(param, param.chName,param.type);
}
}

12
src/main/java/a8k/service/app/devicectrl/param/param_mgr/PlatesBoxPosParamMgr.java

@ -13,14 +13,16 @@ public class PlatesBoxPosParamMgr extends ParamMgr {
static final Logger logger = LoggerFactory.getLogger(PlatesBoxPosParamMgr.class);
enum POS {
Ch0YPos("通道0Y轴位置"),
Ch5YPos("通道5Y轴位置"),
PushEndXPos("推杆到位坐标"),
Ch0YPos("通道0Y轴位置",Integer.class),
Ch5YPos("通道5Y轴位置",Integer.class),
PushEndXPos("推杆到位坐标",Integer.class),
;
public final String chName;
public final Class<?> type;
POS(String chName) {
POS(String chName,Class<?> type) {
this.chName = chName;
this.type = type;
}
}
@ -28,7 +30,7 @@ public class PlatesBoxPosParamMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (POS pos : POS.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName,pos.type);
}
}

2
src/main/java/a8k/service/app/devicectrl/param/param_mgr/TemperatureCtrlParamMgr.java

@ -17,7 +17,7 @@ public class TemperatureCtrlParamMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (TemperatureCtrlParam pos : TemperatureCtrlParam.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName, pos.type);
}
}

21
src/main/java/a8k/service/app/devicectrl/param/param_mgr/TubeFeedingModuleParamMgr.java

@ -12,13 +12,14 @@ import org.springframework.stereotype.Component;
@Component
public class TubeFeedingModuleParamMgr extends ParamMgr {
static final Logger logger = LoggerFactory.getLogger(TubeFeedingModuleParamMgr.class);
@PostConstruct
void initialize() {
for (TubeFeedingModulePos pos : TubeFeedingModulePos.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName, pos.type);
}
for (TubeFeedingModuleSetting param : TubeFeedingModuleSetting.values()) {
setParamChName(param, param.chName);
initParam(param, param.chName, param.type);
}
}
@ -29,8 +30,8 @@ public class TubeFeedingModuleParamMgr extends ParamMgr {
*/
public Integer getTubePreProcessPos(Integer tubeIndex) {
Integer startPos = getParam(TubeFeedingModulePos.Tube0PreProcessPos, Integer.class);
Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class);
return (int)(startPos + spacing * tubeIndex);
Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class);
return (int) (startPos + spacing * tubeIndex);
}
/**
@ -40,8 +41,8 @@ public class TubeFeedingModuleParamMgr extends ParamMgr {
*/
public Integer getTubeScanPos(Integer tubeIndex) {
Integer startPos = getParam(TubeFeedingModulePos.Tube0ScanPos, Integer.class);
Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class);
return (int)(startPos + spacing * tubeIndex);
Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class);
return (int) (startPos + spacing * tubeIndex);
}
/**
@ -51,8 +52,8 @@ public class TubeFeedingModuleParamMgr extends ParamMgr {
*/
public Integer getTubeAltitJudgPos(Integer tubeIndex) {
Integer startPos = getParam(TubeFeedingModulePos.Tube0AltitJudgPos, Integer.class);
Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class);
return (int)(startPos + spacing * tubeIndex);
Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class);
return (int) (startPos + spacing * tubeIndex);
}
/**
@ -62,8 +63,8 @@ public class TubeFeedingModuleParamMgr extends ParamMgr {
*/
public Integer getTubeExistJudgPos(Integer tubeIndex) {
Integer startPos = getParam(TubeFeedingModulePos.Tube0ExistJudgPos, Integer.class);
Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class);
return (int)(startPos + spacing * tubeIndex);
Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class);
return (int) (startPos + spacing * tubeIndex);
}

8
src/main/java/a8k/service/app/devicectrl/param/param_mgr/TubePreProcesPosParamMgr.java

@ -17,16 +17,16 @@ public class TubePreProcesPosParamMgr extends ParamMgr {
@PostConstruct
void initialize() {
for (var pos : TubePreProcessGripperPos.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName,pos.type);
}
for (var pos : TubePreProcessTubeClamp.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName,pos.type);
}
for (var pos : TubePreProcessYPos.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName,pos.type);
}
for (var pos : TubePreProcessZAxisPos.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName,pos.type);
}
}

20
src/main/java/a8k/service/app/devicectrl/param/param_mgr/TurntablePosParamMgr.java

@ -12,24 +12,29 @@ import org.springframework.stereotype.Component;
@Component
public class TurntablePosParamMgr extends ParamMgr {
static final Logger logger = LoggerFactory.getLogger(TurntablePosParamMgr.class);
/*
* 转盘相关位置
*/
enum POS {
PushPos0("入板位置"),
PullPos0("出板位置"),
DropLiquidPos0("滴液位置"),
PosSpacing("位置间隔"),
PushPos0("入板位置", Integer.class),
PullPos0("出板位置", Integer.class),
DropLiquidPos0("滴液位置", Integer.class),
PosSpacing("位置间隔", Integer.class),
;
final String chName;
POS(String chName) {
final public String chName;
final public Class<?> type;
POS(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}
@PostConstruct
void initialize() {
for (POS pos : POS.values()) {
setParamChName(pos, pos.chName);
initParam(pos, pos.chName, pos.type);
}
}
@ -40,6 +45,7 @@ public class TurntablePosParamMgr extends ParamMgr {
setParam(POS.DropLiquidPos0, 1650 + 8950);
setParam(POS.PosSpacing, 1800);
}
public Integer getPushPos0() {
return getParam(POS.PushPos0, Integer.class);
}

4
src/main/java/a8k/service/app/devicectrl/param/param_mgr/base/ParamMgr.java

@ -37,8 +37,8 @@ public class ParamMgr {
return db.getParam(this.serviceName, key.name(), tClass);
}
public void setParamChName(Enum<?> key, String chName) {
db.setParamChName(serviceName, key.name(), chName);
public void initParam(Enum<?> key, String chName, Class<?> type) {
db.initParam(serviceName, key.name(), chName, type);
}

42
src/main/java/a8k/service/app/devicectrl/param/type/Hbot2DCodeScanPos.java

@ -1,30 +1,34 @@
package a8k.service.app.devicectrl.param.type;
import a8k.type.cfg.Pos2d;
public enum Hbot2DCodeScanPos {
PBScanPos0("板夹仓扫码位置0"),
PBScanPos1("板夹仓扫码位置1"),
PBScanPos2("板夹仓扫码位置2"),
PBScanPos3("板夹仓扫码位置3"),
PBScanPos4("板夹仓扫码位置4"),
PBScanPos5("板夹仓扫码位置5"),
PBScanPos0("板夹仓扫码位置0", Pos2d.class),
PBScanPos1("板夹仓扫码位置1", Pos2d.class),
PBScanPos2("板夹仓扫码位置2", Pos2d.class),
PBScanPos3("板夹仓扫码位置3", Pos2d.class),
PBScanPos4("板夹仓扫码位置4", Pos2d.class),
PBScanPos5("板夹仓扫码位置5", Pos2d.class),
LittBS0("小缓冲液扫码位置0"),
LittBS1("小缓冲液扫码位置1"),
LittBS2("小缓冲液扫码位置2"),
LittBS3("小缓冲液扫码位置3"),
LittBS4("小缓冲液扫码位置4"),
LittBS5("小缓冲液扫码位置5"),
LittBS0("小缓冲液扫码位置0", Pos2d.class),
LittBS1("小缓冲液扫码位置1", Pos2d.class),
LittBS2("小缓冲液扫码位置2", Pos2d.class),
LittBS3("小缓冲液扫码位置3", Pos2d.class),
LittBS4("小缓冲液扫码位置4", Pos2d.class),
LittBS5("小缓冲液扫码位置5", Pos2d.class),
LarBS0("大缓冲液扫码位置0"),
LarBS1("大缓冲液扫码位置1"),
LarBS2("大缓冲液扫码位置2"),
LarBS3("大缓冲液扫码位置3"),
LarBS4("大缓冲液扫码位置4"),
LarBS5("大缓冲液扫码位置5"),
LarBS0("大缓冲液扫码位置0", Pos2d.class),
LarBS1("大缓冲液扫码位置1", Pos2d.class),
LarBS2("大缓冲液扫码位置2", Pos2d.class),
LarBS3("大缓冲液扫码位置3", Pos2d.class),
LarBS4("大缓冲液扫码位置4", Pos2d.class),
LarBS5("大缓冲液扫码位置5", Pos2d.class),
;
public final String chName;
public final Class<?> type;
Hbot2DCodeScanPos(String chName) {
Hbot2DCodeScanPos(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

16
src/main/java/a8k/service/app/devicectrl/param/type/HbotLargeBottleBSPos.java

@ -1,16 +1,20 @@
package a8k.service.app.devicectrl.param.type;
import a8k.type.cfg.Pos2d;
public enum HbotLargeBottleBSPos {
LargeBuffer_0Pos("大瓶缓冲液的第1个位置"),
LargeBuffer_DX("大瓶缓冲液的X间距"),
LargeBuffer_DY("大瓶缓冲液的Y间距"),
LargeBSSSampleZPos("大瓶缓冲液取样Z坐标"),
LargeBSSSampleEndZPos("大瓶缓冲液取样结束Z坐标"),
LargeBuffer_0Pos("大瓶缓冲液的第1个位置", Pos2d.class),
LargeBuffer_DX("大瓶缓冲液的X间距",Double.class),
LargeBuffer_DY("大瓶缓冲液的Y间距",Double.class),
LargeBSSSampleZPos("大瓶缓冲液取样Z坐标",Integer.class),
LargeBSSSampleEndZPos("大瓶缓冲液取样结束Z坐标",Integer.class),
;
final public String chName;
final public Class<?> type ;
HbotLargeBottleBSPos(String chName) {
HbotLargeBottleBSPos(String chName,Class<?> type) {
this.chName = chName;
this.type = type;
}
public static HbotLargeBottleBSPos valueOf(int off) {

28
src/main/java/a8k/service/app/devicectrl/param/type/HbotLittleBSPos.java

@ -1,23 +1,27 @@
package a8k.service.app.devicectrl.param.type;
import a8k.type.cfg.Pos2d;
public enum HbotLittleBSPos {
LittleBufferGroup0_000Pos("第1组小瓶缓冲液的第1个位置"),
LittleBufferGroup1_000Pos("第1组小瓶缓冲液的第2个位置"),
LittleBufferGroup2_000Pos("第1组小瓶缓冲液的第3个位置"),
LittleBufferGroup3_000Pos("第1组小瓶缓冲液的第4个位置"),
LittleBufferGroup4_000Pos("第1组小瓶缓冲液的第5个位置"),
LittleBufferGroup5_000Pos("第1组小瓶缓冲液的第6个位置"),
LittleBufferGroupDX("小瓶缓冲液的X间距"),
LittleBufferGroupDY("小瓶缓冲液的Y间距"),
LittleBufferGroup0_000Pos("第1组小瓶缓冲液的第1个位置", Pos2d.class),
LittleBufferGroup1_000Pos("第1组小瓶缓冲液的第2个位置", Pos2d.class),
LittleBufferGroup2_000Pos("第1组小瓶缓冲液的第3个位置", Pos2d.class),
LittleBufferGroup3_000Pos("第1组小瓶缓冲液的第4个位置", Pos2d.class),
LittleBufferGroup4_000Pos("第1组小瓶缓冲液的第5个位置", Pos2d.class),
LittleBufferGroup5_000Pos("第1组小瓶缓冲液的第6个位置", Pos2d.class),
LittleBufferGroupDX("小瓶缓冲液的X间距", Double.class),
LittleBufferGroupDY("小瓶缓冲液的Y间距", Double.class),
LittleBSPierceZPos("小瓶缓冲液刺破Z坐标"),
// LittleBSSampleZPos("小瓶缓冲液取样Z坐标"),
LittleBSSampleEndZPos("小瓶缓冲液取样结束Z坐标"),
LittleBSPierceXYAppendDistance("小瓶缓冲液刺破XY附加距离", Double.class),
LittleBSPierceZPos("小瓶缓冲液刺破Z坐标", Integer.class),
LittleBSSampleZPos("小瓶缓冲液取样Z坐标", Integer.class),
;
final public String chName;
final public Class<?> type;
HbotLittleBSPos(String chName) {
HbotLittleBSPos(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
public static HbotLittleBSPos valueOf(int off) {

30
src/main/java/a8k/service/app/devicectrl/param/type/HbotProbeSubstancePos.java

@ -1,23 +1,29 @@
package a8k.service.app.devicectrl.param.type;
public enum HbotProbeSubstancePos {
ProbeSubstanceGroup0_000Pos("第1组探测物质的第1个位置"),
ProbeSubstanceGroup1_000Pos("第1组探测物质的第2个位置"),
ProbeSubstanceGroup2_000Pos("第1组探测物质的第3个位置"),
ProbeSubstanceGroup3_000Pos("第1组探测物质的第4个位置"),
ProbeSubstanceGroup4_000Pos("第1组探测物质的第5个位置"),
ProbeSubstanceGroup5_000Pos("第1组探测物质的第6个位置"),
ProbeSubstanceDX("探测物质的X间距"),
ProbeSubstanceDY("探测物质的Y间距"),
import a8k.type.cfg.Pos2d;
import a8k.type.cfg.Pos3d;
// ProbeSubstanceSampleZPos("探测物质取样Z坐标"),
ProbeSubstanceSampleEndZPos("探测物质取样结束Z坐标"),//刺破高度和取样高度一样
public enum HbotProbeSubstancePos {
ProbeSubstanceGroup0_000Pos("第1组探测物质的第1个位置", Pos3d.class),
ProbeSubstanceGroup1_000Pos("第1组探测物质的第2个位置",Pos3d.class),
ProbeSubstanceGroup2_000Pos("第1组探测物质的第3个位置",Pos3d.class),
ProbeSubstanceGroup3_000Pos("第1组探测物质的第4个位置",Pos3d.class),
ProbeSubstanceGroup4_000Pos("第1组探测物质的第5个位置",Pos3d.class),
ProbeSubstanceGroup5_000Pos("第1组探测物质的第6个位置",Pos3d.class),
ProbeSubstanceDX("探测物质的X间距",Double.class),
ProbeSubstanceDY("探测物质的Y间距",Double.class),
ProbeSubstancePierceXYAppendDistance("探测物质液刺破XY附加距离",Double.class),
ProbeSubstancePierceZPos("探测物质液刺破Z坐标",Integer.class),
// ProbeSubstanceSampleZPos(探测物质取样Z坐标.class),
ProbeSubstanceSampleZPos("探测物质取样结束Z坐标",Integer.class),//刺破高度和取样高度一样
;
final public String chName;
final public Class<?> type;
HbotProbeSubstancePos(String chName) {
HbotProbeSubstancePos(String chName,Class<?> type) {
this.chName = chName;
this.type = type;
}
public static HbotProbeSubstancePos valueOf(int off) {

41
src/main/java/a8k/service/app/devicectrl/param/type/HbotSamplePos.java

@ -1,35 +1,38 @@
package a8k.service.app.devicectrl.param.type;
import a8k.type.cfg.Pos3d;
public enum HbotSamplePos {
EmergencyTubeSamplePos("<急诊位>取样位置"),
EmergencyTubeSampleEndPos("<急诊位>取样结束位置"),
EmergencyTubeSamplePos("<急诊位>取样位置", Pos3d.class),
EmergencyTubeSampleEndPos("<急诊位>取样结束位置", Pos3d.class),
BloodHTubeSamplePos("<全血高试管>取样位置"),
BloodHTubeSampleEndPos("<全血高试管>取样结束位置"),
BloodHTubeSamplePos("<全血高试管>取样位置", Pos3d.class),
BloodHTubeSampleEndPos("<全血高试管>取样结束位置", Pos3d.class),
BloodSTubeSamplePos("<全血低试管>取样位置"),
BloodSTubeSampleEndPos("<全血低试管>取样结束位置"),
BloodSTubeSamplePos("<全血低试管>取样位置", Pos3d.class),
BloodSTubeSampleEndPos("<全血低试管>取样结束位置", Pos3d.class),
MiniTubeSamplePos("<迷你试管>取样位置"),
MinitubeSampleEndPos("<迷你试管>取样结束位置"),
MiniTubeSamplePos("<迷你试管>取样位置", Pos3d.class),
MinitubeSampleEndPos("<迷你试管>取样结束位置", Pos3d.class),
MiniBloodSamplePos("<阳普管>取样位置"),
MiniBloodSampleEndPos("<阳普管>取样结束位置"),
MiniBloodSamplePos("<阳普管>取样位置", Pos3d.class),
MiniBloodSampleEndPos("<阳普管>取样结束位置", Pos3d.class),
Bulltube1P5SamplePos("<子弹头试管1.5mL>取样位置"),
Bulltube1P5SampleEndPos("<子弹头试管1.5mL>取样结束位置"),
Bulltube1P5SamplePos("<子弹头试管1.5mL>取样位置", Pos3d.class),
Bulltube1P5SampleEndPos("<子弹头试管1.5mL>取样结束位置", Pos3d.class),
Bulltube0P5SamplePos("<子弹头试管0.5mL>取样位置"),
Bulltube0P5SampleEndPos("<子弹头试管0.5mL>取样结束位置"),
Bulltube0P5SamplePos("<子弹头试管0.5mL>取样位置", Pos3d.class),
Bulltube0P5SampleEndPos("<子弹头试管0.5mL>取样结束位置", Pos3d.class),
StoolTestTubeSamplePos("<粪便试管>取样位置"),
StoolTestTubeSampleEndPos("<粪便试管>取样结束位置"),
StoolTestTubeSamplePos("<粪便试管>取样位置", Pos3d.class),
StoolTestTubeSampleEndPos("<粪便试管>取样结束位置", Pos3d.class),
;
public final String chName;
public final String chName;
public final Class<?> type;
HbotSamplePos(String chName) {
HbotSamplePos(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

27
src/main/java/a8k/service/app/devicectrl/param/type/HbotTipPosParam.java

@ -1,24 +1,29 @@
package a8k.service.app.devicectrl.param.type;
import a8k.type.cfg.Pos3d;
public enum HbotTipPosParam {
TipGroup0_000Pos("第1组TIP的第1个位置"),
TipGroup0_SpaceingX("第1组TIP的X间距"),
TipGroup0_SpaceingY("第1组TIP的Y间距"),
TipGroup0_000Pos("第1组TIP的第1个位置", Pos3d.class),
TipGroup0_SpaceingX("第1组TIP的X间距", Double.class),
TipGroup0_SpaceingY("第1组TIP的Y间距", Double.class),
TipGroup1_000Pos("第2组TIP的第1个位置"),
TipGroup1_SpaceingX("第2组TIP的X间距"),
TipGroup1_SpaceingY("第2组TIP的Y间距"),
TipGroup1_000Pos("第2组TIP的第1个位置", Pos3d.class),
TipGroup1_SpaceingX("第2组TIP的X间距", Double.class),
TipGroup1_SpaceingY("第2组TIP的Y间距", Double.class),
TipGroup2_000Pos("第3组TIP的第1个位置"),
TipGroup2_SpaceingX("第3组TIP的X间距"),
TipGroup2_SpaceingY("第3组TIP的Y间距"),
TipGroup2_000Pos("第3组TIP的第1个位置", Pos3d.class),
TipGroup2_SpaceingX("第3组TIP的X间距", Double.class),
TipGroup2_SpaceingY("第3组TIP的Y间距", Double.class),
DropTipPos("丢TIP位置"),
DropTipPos("丢TIP位置", Pos3d.class),
;
final public String chName;
final public Class<?> type;
HbotTipPosParam(String chName) {
HbotTipPosParam(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
public static HbotTipPosParam valueOf(int off) {

20
src/main/java/a8k/service/app/devicectrl/param/type/OptModuleExtParam.java

@ -1,20 +1,22 @@
package a8k.service.app.devicectrl.param.type;
public enum OptModuleExtParam {
OptScanRefPos("光学扫描参考坐标"),
OptScanRefPos("光学扫描参考坐标", Integer.class),
FOptScanShift("F光学扫描偏移"),
FOptEmissionIntensity("F发射强度"),//Int
FOptScanGainVal("F光学扫描放大倍数"),//Double
FOptScanShift("F光学扫描偏移", Integer.class),
FOptEmissionIntensity("F发射强度", Integer.class),//Int
FOptScanGainVal("F光学扫描放大倍数", Double.class),//Double
TOptScanShift("T光学扫描偏移"),
TOptEmissionIntensity("T发射强度"),
TOptScanGainVal("T光学扫描放大倍数"),
TOptScanShift("T光学扫描偏移", Integer.class),
TOptEmissionIntensity("T发射强度", Integer.class),
TOptScanGainVal("T光学扫描放大倍数", Double.class),
;
public final String chName;
public final String chName;
public final Class<?> type;
OptModuleExtParam(String chName) {
OptModuleExtParam(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

10
src/main/java/a8k/service/app/devicectrl/param/type/OptModuleParam.java

@ -1,13 +1,15 @@
package a8k.service.app.devicectrl.param.type;
public enum OptModuleParam {
PullerTargetPos("拉板目标位置"),
OptScanerDropPos("丢板坐标"),
OptScanerScandbyPos("扫描待机位"),
PullerTargetPos("拉板目标位置", Integer.class),
OptScanerDropPos("丢板坐标", Integer.class),
OptScanerScandbyPos("扫描待机位", Integer.class),
;
public final String chName;
public final Class<?> type;
OptModuleParam(String chName) {
OptModuleParam(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

10
src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLDThresholdParam.java

@ -1,12 +1,14 @@
package a8k.service.app.devicectrl.param.type;
public enum PipetteGunLLDThresholdParam {
DEFAULT_C_THRESHOLD("默认电容C阈值"),
DEFAULT_P_THRESHOLD("默认压力阈值"),
DEFAULT_C_THRESHOLD("默认电容C阈值", Integer.class),
DEFAULT_P_THRESHOLD("默认压力阈值", Integer.class),
;
public final String chName;
public final String chName;
public final Class<?> type;
PipetteGunLLDThresholdParam(String chName) {
PipetteGunLLDThresholdParam(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

8
src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLDTypeParam.java

@ -1,11 +1,15 @@
package a8k.service.app.devicectrl.param.type;
import a8k.hardware.type.LldType;
public enum PipetteGunLLDTypeParam {
DEFAULT_LLD_TYPE("默认LLD类型"),
DEFAULT_LLD_TYPE("默认LLD类型", LldType.class),
;
public final String chName;
public final Class<?> type;
PipetteGunLLDTypeParam(String chName) {
PipetteGunLLDTypeParam(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

20
src/main/java/a8k/service/app/devicectrl/param/type/PipetteGunLLFParam.java

@ -2,20 +2,22 @@ package a8k.service.app.devicectrl.param.type;
public enum PipetteGunLLFParam {
// 试管容器参数
EMERGENCY_TUBE_LLF_VEL("<急诊试管>液面跟随速度"),
BLOOD_TUBE_LLF_VEL("<全血试管>液面跟随速度"),
MINI_TUBE_LLF_VEL("<迷你试管>液面跟随速度"),
MINI_BLOOD_LLF_VEL("<阳普管>液面跟随速度"),
BULLET_TUBE_1P5_LLF_VEL("<子弹头试管1.5ML>液面跟随速度"),
BULLET_TUBE_0P5_LLF_VEL("<子弹头试管0.5ML>液面跟随速度"),
STOOL_TEST_TUBE_LLF_VEL("<粪便试管>液面跟随速度"),
EMERGENCY_TUBE_LLF_VEL("<急诊试管>液面跟随速度",Double.class),
BLOOD_TUBE_LLF_VEL("<全血试管>液面跟随速度",Double.class),
MINI_TUBE_LLF_VEL("<迷你试管>液面跟随速度",Double.class),
MINI_BLOOD_LLF_VEL("<阳普管>液面跟随速度",Double.class),
BULLET_TUBE_1P5_LLF_VEL("<子弹头试管1.5ML>液面跟随速度",Double.class),
BULLET_TUBE_0P5_LLF_VEL("<子弹头试管0.5ML>液面跟随速度",Double.class),
STOOL_TEST_TUBE_LLF_VEL("<粪便试管>液面跟随速度",Double.class),
//耗材容器参数
LARGE_BS_BOTTLE_LLF_VEL("<大瓶缓冲液>液面跟随速度"),
LARGE_BS_BOTTLE_LLF_VEL("<大瓶缓冲液>液面跟随速度",Double.class),
;
public final String chName;
public final Class<?> type;
PipetteGunLLFParam(String chName) {
PipetteGunLLFParam(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

8
src/main/java/a8k/service/app/devicectrl/param/type/TemperatureCtrlParam.java

@ -3,13 +3,15 @@ package a8k.service.app.devicectrl.param.type;
public enum TemperatureCtrlParam {
IncubatorTCMTempOffset("<孵育仓>温度偏移"),
PlatesBoxTCMTempOffset("<板夹仓>温度偏移"),
IncubatorTCMTempOffset("<孵育仓>温度偏移", Double.class),
PlatesBoxTCMTempOffset("<板夹仓>温度偏移", Double.class),
;
public final String chName;
public final Class<?> type;
TemperatureCtrlParam(String chName) {
TemperatureCtrlParam(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}

11
src/main/java/a8k/service/app/devicectrl/param/type/TubePreProcessZAxisPos.java

@ -1,12 +1,15 @@
package a8k.service.app.devicectrl.param.type;
public enum TubePreProcessZAxisPos {
ZMotorTakeHTubePos("<Z轴>取高试管位置"),//
ZMotorTakeSTubePos("<Z轴>取低试管位置"),//
ZMotorShakeTubePos("<Z轴>摇匀放置位置"),//
ZMotorTakeHTubePos("<Z轴>取高试管位置",Integer.class),//
ZMotorTakeSTubePos("<Z轴>取低试管位置",Integer.class),//
ZMotorShakeTubePos("<Z轴>摇匀放置位置",Integer.class),//
;
public final String chName;
TubePreProcessZAxisPos(String chName) {
public final Class<?> type;
TubePreProcessZAxisPos(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

2
src/main/java/a8k/service/app/devicectrl/script/DeviceCtrlScripter.java

@ -190,7 +190,7 @@ public class DeviceCtrlScripter {
aspirate(PipetteGunBindActionType.TAKE_LARGE_BUFFER_SOLUTION, ctx, takeul);
//移动到吐液位
hbotCtrlService.moveTo(hbotConsumableParamMgr.getProbeSubstanceSamplePosEnd(ctx.getConsumable().getGroup(), ctx.getConsumable().getPos()));
hbotCtrlService.moveTo(hbotConsumableParamMgr.getProbeSubstanceSamplePos(ctx.getConsumable().getGroup(), ctx.getConsumable().getPos()));
//吐液
distribute(PipetteGunBindActionType.DISTRIBUTION_LARGE_BUFFER_SOLUTION_PROBE_SUBSTANCE, ctx, takeul);

63
src/main/java/a8k/service/dao/LowerDeviceParameterDao.java

@ -12,6 +12,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import java.sql.ResultSet;
import java.util.List;
@ -48,12 +49,14 @@ public class LowerDeviceParameterDao {
void init() {
zSqlite = new ZSqlite<>();
zSqlite.init(jdbcTemplate, tableName, tClass);
zSqlite.forceDeleteTable();
zSqlite.createTable();
//初始化表
recoveryAllParam();
// recoveryAllParam();
}
@SneakyThrows private Parameter rowMapper(ResultSet rs, int rowNum) {return zSqlite.rowMapperList(rs,rowNum);}
@SneakyThrows private Parameter rowMapper(ResultSet rs, int rowNum) {return zSqlite.rowMapperList(rs, rowNum);}
//
// GETTER
@ -66,6 +69,7 @@ public class LowerDeviceParameterDao {
}
Parameter parameter = list.get(0);
Assert.isTrue(tClass.getSimpleName().equals(parameter.valType), "参数类型不匹配");
return ZJsonHelper.objectFromJson(parameter.val, tClass);
}
@ -83,59 +87,36 @@ public class LowerDeviceParameterDao {
}
public void setParamChName(String service, String key, String chName) {
Parameter old = getParam(service, key);
public void initParam(String service, String key, String chName, Class<?> type) {
Parameter old = storgeDB.findByServiceAndKey(service, key);
if (old == null) {
Parameter newobj = new Parameter();
newobj.service = service;
newobj.key = key;
newobj.chName = chName;
zSqlite.add(newobj);
} else {
// {
// zSqlite.delete(jdbcTemplate, tableName, old.id);
// Parameter newobj = old.deepCopy();
// newobj.id = 0;
// newobj.chName = chName;
// zSqlite.addObj( newobj);
// }
{
if (old.chName != null && old.chName.equals(chName)) {
return;
}
Parameter newobj = old.deepCopy();
newobj.chName = chName;
zSqlite.update(newobj);
}
old = new Parameter();
}
old.id = 0;
old.service = service;
old.key = key;
old.chName = chName;
old.valType = type.getSimpleName();
zSqlite.add(old);
}
//
// SETTER
//
public void updateParam(String service, String key, Object pos) {
logger.info("updateParam: service={}, key={}, pos={}", service, key, pos);
public void updateParam(String service, String key, Object param) {
logger.info("updateParam: service={}, key={}, param={}", service, key, param);
ObjectMapper objectMapper = new ObjectMapper();
List<Parameter> list = jdbcTemplate.query("select * from " + tableName + " where service = ? and key = ?;", this::rowMapper, service, key);
if (list.isEmpty()) {
Parameter parameter = new Parameter();
parameter.service = service;
parameter.key = key;
parameter.val = ZJsonHelper.createObjectNode(pos);
parameter.valType = pos.getClass().getSimpleName();
zSqlite.add(parameter);
return;
}
Assert.isTrue(list.size() == 1, "参数不存在,或者存在多个参数");
Assert.isTrue(list.get(0).valType.equals(param.getClass().getSimpleName()), "参数类型不匹配");
Parameter parameter = list.get(0);
parameter.val = ZJsonHelper.createObjectNode(pos);
parameter.val = ZJsonHelper.createObjectNode(param);
parameter.service = service;
parameter.key = key;
parameter.valType = pos.getClass().getSimpleName();
parameter.valType = param.getClass().getSimpleName();
zSqlite.update(parameter);
}

4
src/main/java/a8k/service/dao/utils/PosParameterReader.java

@ -29,10 +29,6 @@ public class PosParameterReader {
return lowerDeviceParameterDao.getParam(this.service, key.name(), tClass);
}
public void setParamChName(Enum<?> key, String chName) {
lowerDeviceParameterDao.setParamChName(service, key.name(), chName);
}
public void setParam(String key, Object pos) {
lowerDeviceParameterDao.updateParam(service, key, pos);

18
src/main/java/a8k/type/TubeFeedingModulePos.java

@ -1,17 +1,19 @@
package a8k.type;
public enum TubeFeedingModulePos {
TubeHolderEnterXPos("入料位置"), //
TubeHolderExitXPos("出料位置"), //
TubeHolderScanXPos("试管架扫描位置"), //
Tube0ScanPos("01号试管扫描位置"), //
Tube0AltitJudgPos("01试管高度判断位置"), //
Tube0ExistJudgPos("01试管存在判断位置"), //
Tube0PreProcessPos("01试管预处理位置"), //
TubeHolderEnterXPos("入料位置", Integer.class), //
TubeHolderExitXPos("出料位置", Integer.class), //
TubeHolderScanXPos("试管架扫描位置", Integer.class), //
Tube0ScanPos("01号试管扫描位置", Integer.class), //
Tube0AltitJudgPos("01试管高度判断位置", Integer.class), //
Tube0ExistJudgPos("01试管存在判断位置", Integer.class), //
Tube0PreProcessPos("01试管预处理位置", Integer.class), //
;
public final String chName;
public final Class<?> type;
TubeFeedingModulePos(String chName) {
TubeFeedingModulePos(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

8
src/main/java/a8k/type/TubeFeedingModuleSetting.java

@ -1,12 +1,14 @@
package a8k.type;
public enum TubeFeedingModuleSetting {
TubeScanServoTorque("试管扫描伺服力矩"), //
TubeSpacing("试管间距"), //
TubeScanServoTorque("试管扫描伺服力矩",Integer.class), //
TubeSpacing("试管间距",Double.class), //
;
public final String chName;
public final Class<?> type;
TubeFeedingModuleSetting(String chName) {
TubeFeedingModuleSetting(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

10
src/main/java/a8k/type/TubePreProcessGripperPos.java

@ -1,13 +1,15 @@
package a8k.type;
public enum TubePreProcessGripperPos {
GripperServoOpenPos("<抓手>张开位置"),//
GripperServoTakeCapPos("<抓手>取试管位置"),//
GripperRedundancyHeight("<抓手>冗余高度"),//
GripperServoOpenPos("<抓手>张开位置", Integer.class),//
GripperServoTakeCapPos("<抓手>取试管位置", Integer.class),//
GripperRedundancyHeight("<抓手>冗余高度", Integer.class),//
;
public final String chName;
public final Class<?> type;
TubePreProcessGripperPos(String chName) {
TubePreProcessGripperPos(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

8
src/main/java/a8k/type/TubePreProcessTubeClamp.java

@ -1,12 +1,14 @@
package a8k.type;
public enum TubePreProcessTubeClamp {
ShakeClampMotorClampPos("<摇匀试管夹>夹紧位"),//
ShakeClampMotorReleasePos("<摇匀试管夹>释放位"),//
ShakeClampMotorClampPos("<摇匀试管夹>夹紧位",Integer.class),//
ShakeClampMotorReleasePos("<摇匀试管夹>释放位",Integer.class),//
;
public final String chName;
public final Class<?> type;
TubePreProcessTubeClamp(String chName) {
TubePreProcessTubeClamp(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

8
src/main/java/a8k/type/TubePreProcessYPos.java

@ -2,12 +2,14 @@ package a8k.type;
public enum TubePreProcessYPos {
YServoTakeTubePos("<Y轴舵机>取试管位置"),//
YServoShakePos("<Y轴舵机>摇匀位置"),//
YServoTakeTubePos("<Y轴舵机>取试管位置",Integer.class),//
YServoShakePos("<Y轴舵机>摇匀位置",Integer.class),//
;
public final String chName;
public final Class<?> type;
TubePreProcessYPos(String chName) {
TubePreProcessYPos(String chName, Class<?> type) {
this.chName = chName;
this.type = type;
}
}

4
src/main/java/a8k/unittest/TestBeforeRun.java

@ -17,8 +17,8 @@ public class TestBeforeRun {
@PostConstruct
void init() {
LldType lddType = pipetteGunLLDParamMgr.getLLDType(PipetteGunLLDTypeParam.DEFAULT_LLD_TYPE);
Assert.isTrue(lddType != null, "LldType is null");
// LldType lddType = pipetteGunLLDParamMgr.getLLDType(PipetteGunLLDTypeParam.DEFAULT_LLD_TYPE);
// Assert.isTrue(lddType != null, "LldType is null");
}
}

2
src/main/java/a8k/utils/ProjProcessContextUtils.java

@ -159,7 +159,7 @@ public class ProjProcessContextUtils {
A8kReactionFlowType type = ctx.getProjBuildinInfo().projBaseInfo.reactionFlowType;
return switch (type) {
case FlowType1 -> hbotConsumableParamMgr.getLittleBufferSamplePosEnd(ctx.getConsumable().getGroup(), ctx.getConsumable().getPos());
case FlowType2 -> hbotConsumableParamMgr.getProbeSubstanceSamplePosEnd(ctx.getConsumable().getGroup(), ctx.getConsumable().getPos());
case FlowType2 -> hbotConsumableParamMgr.getProbeSubstanceSamplePos(ctx.getConsumable().getGroup(), ctx.getConsumable().getPos());
};
}

BIN
src/main/resources/app.db

Loading…
Cancel
Save