|
|
@ -53,35 +53,20 @@ public class PipetteCtrlDriver { |
|
|
|
public static final int initDeviceBlock = 9; |
|
|
|
public static final int putTipBlock = 11; |
|
|
|
|
|
|
|
public static final int setLLDStartZ = 20; |
|
|
|
public static final int setLLDEndZ = 21; |
|
|
|
public static final int setLldType = 22; |
|
|
|
public static final int setLldCThreshold = 23; |
|
|
|
public static final int setLldPThreshold = 24; |
|
|
|
public static final int lldPrepareBlock = 25; |
|
|
|
public static final int lldBlock = 26; |
|
|
|
public static final int lldCalibrationBlock = 27; |
|
|
|
public static final int lldIsDetectLiquid = 28; |
|
|
|
|
|
|
|
public static final int getSensorSampleData = 29; |
|
|
|
public static final int readCapacitance = 30; |
|
|
|
|
|
|
|
public static final int aspiratePrepareBlock = 30; |
|
|
|
public static final int aspirateSetLlfVelocity = 31; |
|
|
|
public static final int setLlfStartZ = 32; |
|
|
|
public static final int setLlfEndZ = 33; |
|
|
|
public static final int aspirateSetOperationVerifPThre = 34; |
|
|
|
public static final int aspirateSetOperationVerifEigenTime = 35; |
|
|
|
public static final int aspirateSetOperationVerifTolerance = 36; |
|
|
|
public static final int aspirateBlock = 37; |
|
|
|
public static final int aspirateAndVerifyBlock = 38; |
|
|
|
public static final int shakeUpBlock = 39; |
|
|
|
public static final int aspirateInferPressureBlock = 40; |
|
|
|
public static final int aspirateInferEigenTimeBlock = 41; |
|
|
|
public static final int getAspirateInferPressureResult = 42; |
|
|
|
public static final int getAspirateInferEigenTimeResultBlock = 43; |
|
|
|
|
|
|
|
public static final int pipetteInitDevice = 31; |
|
|
|
public static final int pipettePutTip = 32; |
|
|
|
public static final int pipettePumpMoveTo = 33; |
|
|
|
public static final int pipetteLld = 34; |
|
|
|
public static final int pipetteAspirate = 35; |
|
|
|
public static final int pipetteDistribu = 36; |
|
|
|
public static final int pipetteShakeUp = 37; |
|
|
|
public static final int pipetteClearHangingLiquid = 38; |
|
|
|
|
|
|
|
public static final int zAixsZeroPointIsTrigger = 50; |
|
|
|
|
|
|
|
public static final int setReg = 100; |
|
|
|
public static final int getReg = 101; |
|
|
@ -153,62 +138,34 @@ public class PipetteCtrlDriver { |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "设置LLD起始位置", order = FnOrder.setLLDStartZ) |
|
|
|
public void setStartZ(Integer startZ) throws AppException { |
|
|
|
log.info("setStartZ:{}", startZ); |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_set_lld_startz.toInt(), startZ); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "设置LLD结束位置", order = FnOrder.setLLDEndZ) |
|
|
|
public void setEndZ(Integer endZ) throws AppException { |
|
|
|
log.info("setEndZ:{}", endZ); |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_set_lld_endz.toInt(), endZ); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "设置LLD类型", order = FnOrder.setLldType) |
|
|
|
public void setLldType(LldType lldType) throws AppException { |
|
|
|
log.info("setLldType:{}", lldType); |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_set_lld_type.toInt(), lldType.getIndex()); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "设置LLD.C阈值", order = FnOrder.setLldCThreshold) |
|
|
|
public void setLldCThreshold(Integer cThreshold) throws AppException { |
|
|
|
log.info("setLldCThreshold:{}", cThreshold); |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_set_lld_c_threshold.toInt(), cThreshold); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "设置LLD.P阈值", order = FnOrder.setLldPThreshold) |
|
|
|
public void setLldPThreshold(Integer pThreshold) throws AppException { |
|
|
|
log.info("setLldPThreshold:{}", pThreshold); |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_set_lld_p_threshold.toInt(), pThreshold); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "LLD.准备", order = FnOrder.lldPrepareBlock) |
|
|
|
public void lldPrepareBlock() throws AppException { |
|
|
|
log.info("lldPrepareBlock"); |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_lld_prepare.toInt()); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
// zMotorMoveToBlock(startPos); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "LLD.Do", order = FnOrder.lldBlock) |
|
|
|
public void lldBlock() |
|
|
|
throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_lld.toInt()); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
public void lldBlock() throws AppException { |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "LLD.参数标定", order = FnOrder.lldCalibrationBlock) |
|
|
|
public void lldCalibrationBlock() throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_lld_test.toInt()); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
// kpipette_lld_is_detect_liquid |
|
|
|
@ExtApiFn(name = "LLD.读取是否检测到液体", order = FnOrder.lldIsDetectLiquid) |
|
|
|
public Boolean lldIsDetectLiquid() throws AppException { |
|
|
|
var receipt = canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_lld_is_detect_liquid.toInt()); |
|
|
|
return receipt.getContentI32(0) == 1; |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -242,96 +199,111 @@ public class PipetteCtrlDriver { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ExtApiFn(name = "吸液准备", order = FnOrder.aspiratePrepareBlock) |
|
|
|
public void aspiratePrepareBlock() throws AppException { |
|
|
|
// canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_aspirate_prepare.toInt()); |
|
|
|
// canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "设置LLF速度", order = FnOrder.aspirateSetLlfVelocity) |
|
|
|
public void aspirateSetLlfVelocity(Integer llf_zm_rpm) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_aspirate_set_llf_velocity.toInt(), llf_zm_rpm); |
|
|
|
} |
|
|
|
// kpipette_set_llf_startz |
|
|
|
//kpipette_set_llf_endz |
|
|
|
|
|
|
|
@ExtApiFn(name = "设置LLF起始位置", order = FnOrder.setLlfStartZ) |
|
|
|
public void setLlfStartZ(Integer startZ) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.kpipette_set_llf_startz.toInt(), startZ); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "设置LLF结束位置", order = FnOrder.setLlfEndZ) |
|
|
|
public void setLlfEndZ(Integer endZ) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.kpipette_set_llf_endz.toInt(), endZ); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "设置操作验证压力阈值", order = FnOrder.aspirateSetOperationVerifPThre) |
|
|
|
public void aspirateSetOperationVerifPThre(Integer p_thre) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_aspirate_set_operation_verifi_p_thre.toInt(), |
|
|
|
p_thre); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "设置操作验证时间", order = FnOrder.aspirateSetOperationVerifEigenTime) |
|
|
|
public void aspirateSetOperationVerifEigenTime(Integer eigen_time) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_aspirate_set_operation_verifi_eigen_time.toInt(), |
|
|
|
eigen_time); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "设置操作验证容忍度", order = FnOrder.aspirateSetOperationVerifTolerance) |
|
|
|
public void aspirateSetOperationVerifTolerance(Integer tolerance) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_aspirate_set_operation_verifi_tolerance.toInt(), |
|
|
|
tolerance); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "吸液", order = FnOrder.aspirateBlock) |
|
|
|
public void aspirateBlock(Integer ul) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_aspirate.toInt(), ul); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "吸液并验证", order = FnOrder.aspirateAndVerifyBlock) |
|
|
|
public void aspirateAndVerifyBlock(Integer ul) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_aspirate_and_verify.toInt(), ul); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "振荡", order = FnOrder.shakeUpBlock) |
|
|
|
public void shakeUpBlock(Integer ul, Integer times) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_shake_up.toInt(), ul, times); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime + times * 3000); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "清除悬液", order = FnOrder.shakeUpBlock) |
|
|
|
public void clearHangingLiquid(Integer repeatTimes) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.kpipette_clear_hanging_liquid.toInt(), repeatTimes); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "吸液推算压力", order = FnOrder.aspirateInferPressureBlock) |
|
|
|
public void aspirateInferPressureBlock(Integer ul) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_aspirate_infer_pressure.toInt(), ul); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "吸液推算时间", order = FnOrder.aspirateInferEigenTimeBlock) |
|
|
|
public void aspirateInferEigenTimeBlock(Integer ul) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_aspirate_infer_eigen_time.toInt(), ul); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "获取吸液推算压力结果", order = FnOrder.getAspirateInferPressureResult) |
|
|
|
public Integer getAspirateInferPressureResult() throws AppException { |
|
|
|
var receipt = canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_get_aspirate_infer_pressure_result.toInt()); |
|
|
|
return receipt.getContentI32(0); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "获取吸液推算时间结果", order = FnOrder.getAspirateInferEigenTimeResultBlock) |
|
|
|
public Integer getAspirateInferEigenTimeResultBlock() throws AppException { |
|
|
|
var receipt = canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_get_aspirate_infer_eigen_time_result.toInt()); |
|
|
|
return receipt.getContentI32(0); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
// virtual int32_t pipette_init_device(); |
|
|
|
// virtual int32_t pipette_put_tip(); |
|
|
|
// virtual int32_t pipette_pump_move_to(int32_t pumpv, int32_t ul); |
|
|
|
// virtual int32_t pipette_lld(int32_t lldtype, int32_t maxzpos, int32_t c_threshold, int32_t p_threshold); |
|
|
|
// virtual int32_t pipette_aspirate(int32_t llfrpm, int32_t llftpos, int32_t pumpv, int32_t ul); |
|
|
|
// virtual int32_t pipette_distribu(int32_t llfrpm, int32_t pumpv, int32_t ul); |
|
|
|
// virtual int32_t pipette_shake_up(int32_t llfrpm, int32_t maxzpos, int32_t pumpv, int32_t ul, int32_t times); |
|
|
|
|
|
|
|
@ExtApiFn(name = "初始化设备", order = FnOrder.pipetteInitDevice) |
|
|
|
public void pipetteInitDevice() throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_init_device.toInt()); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "放置吸头", order = FnOrder.pipettePutTip) |
|
|
|
public void pipettePutTip() throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_put_tip.toInt()); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "z轴零点是否触发", order = FnOrder.zAixsZeroPointIsTrigger) |
|
|
|
@ExtApiFn(name = "泵移动到", order = FnOrder.pipettePumpMoveTo) |
|
|
|
public void pipettePumpMoveTo(Integer pumpv, Integer ul) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_pump_move_to.toInt(), pumpv, ul); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "LLD", order = FnOrder.pipetteLld) |
|
|
|
public void pipetteLld(LldType lldtype, Integer maxzpos, Integer c_threshold, Integer p_threshold) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_lld.toInt(), lldtype.getIndex(), maxzpos, c_threshold, p_threshold); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "吸液", order = FnOrder.pipetteAspirate) |
|
|
|
public void pipetteAspirate(Integer llfrpm, Integer llftpos, Integer pumpv, Integer ul) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_aspirate.toInt(), llfrpm, llftpos, pumpv, ul); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "分液", order = FnOrder.pipetteDistribu) |
|
|
|
public void pipetteDistribu(Integer llfrpm, Integer pumpv, Integer ul) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_distribu.toInt(), llfrpm, pumpv, ul); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
@ExtApiFn(name = "振荡", order = FnOrder.pipetteShakeUp) |
|
|
|
public void pipetteShakeUp(Integer llfrpm, Integer maxzpos, Integer pumpv, Integer ul, Integer times) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_shake_up.toInt(), llfrpm, maxzpos, pumpv, ul, times); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
//pipette_clear_hanging_liquid |
|
|
|
|
|
|
|
@ExtApiFn(name = "清除悬液", order = FnOrder.pipetteClearHangingLiquid) |
|
|
|
public void pipetteClearHangingLiquid(Integer repeatTimes) throws AppException { |
|
|
|
canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_clear_hanging_liquid.toInt(), repeatTimes); |
|
|
|
canBusService.waitForMod(MId.PipetteMod, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public Boolean zAixsZeroPointIsTrigger() throws AppException { |
|
|
|
return canBusService.callcmd(MId.PipetteMod.toInt(), CmdId.pipette_zmotor_read_zero_point_state.toInt()).getContentI32(0) == 1; |
|
|
|
} |
|
|
|