Browse Source

update

tags/v0
zhaohe 1 year ago
parent
commit
89f0920965
  1. 78
      src/main/java/a8k/service/hardware/HbotControlService.java
  2. 134
      src/main/java/a8k/service/hardware/TestScript.java
  3. BIN
      zhaohe_app.db

78
src/main/java/a8k/service/hardware/HbotControlService.java

@ -108,7 +108,7 @@ public class HbotControlService implements HardwareCtrlModule {
1230,
1250,
new Pos2d(579, 1097),
283,
320,
new BottlesPosInfo/*大孔*/(
new Pos2d(160, 160),
210,
@ -178,7 +178,7 @@ public class HbotControlService implements HardwareCtrlModule {
* @throws HardwareException e
* @throws InterruptedException e
*/
private void hbotCheckAndMoveTo(Pos3d targetPos) throws HardwareException, InterruptedException {
public void hbotCheckAndMoveTo(Pos3d targetPos) throws HardwareException, InterruptedException {
logger.info("hbotCheckAndMoveTo:{}", targetPos);
if (!canBus.getIOState(IOId.PlateBoxCoverClosurePPS)) {
throw new HardwareException(A8kEcode.PlateBoxNotCover);
@ -227,7 +227,7 @@ public class HbotControlService implements HardwareCtrlModule {
}
private void zMoveTo(Integer z) throws HardwareException, InterruptedException {
public void zMoveTo(Integer z) throws HardwareException, InterruptedException {
if (z == 0) {
canBus.stepMotorEasyMoveToZeroPointQuickBlock(MId.PipetteModZM, getActionOvertime());
} else {
@ -469,78 +469,6 @@ public class HbotControlService implements HardwareCtrlModule {
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 测试
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Boolean testScriptWorkFlag = false;
@HardwareServiceAction(name = "取放Tip", group = "测试脚本")
public AppRet<Boolean> takeTipTestStep(Integer tipgroup, Integer index) throws HardwareException, InterruptedException {
var ret = takeTip(tipgroup, index);
TipPickUpPosInfo tipPos = getTipPickUpPosInfo();
canBus.stepMotorEasyMoveToBlock(MId.PipetteModZM, tipPos.getPickUpZPos(tipgroup) - 100, getActionOvertime());
canBus.pipetteCtrlPutTipBlock(MId.PipetteMod);
if (canBus.moduleGetReg(MId.PipetteMod, RegIndex.kreg_pipette_tip_state) == 1) {
throw new HardwareException(A8kEcode.PutTipFail);
}
canBus.stepMotorEasyMoveToZeroPointQuickBlock(MId.PipetteModZM, getActionOvertime());
return ret;
}
@HardwareServiceAction(name = "取全部Tip", group = "测试脚本")
public AppRet<Map<String, String>> testTakeAllTip(Integer groupId, Integer startFrom) throws HardwareException, InterruptedException {
// ObjectMapper mapper = new ObjectMapper();
testScriptWorkFlag = true;
Map<String, String> result = new HashMap<>();
for (int i = startFrom; i < TipPickUpPosInfo.cgetTipNum(); i++) {
var ret = takeTipTestStep(groupId, i);
if (!ret.getData()) {
throw new HardwareException(A8kEcode.TakeTipFail);
}
result.put("Tip" + i, ret.getData() ? "suc" : "fail");
logger.info("Take Tip {}-{} => {}", groupId, i, ret.getData());
if (!testScriptWorkFlag) {
break;
}
}
return AppRet.success(result);
}
@HardwareServiceAction(name = "测试所有小瓶缓冲液位置", group = "测试脚本")
public void testAllLittleBottleBufferPos(ConsumableGroup group) throws HardwareException, InterruptedException {
testScriptWorkFlag = true;
BottleGroupsPosInfo posInfo = getBottleBufferPosInfo();
for (int i = 0; i < BottlesPosInfo.cgetMAX(); i++) {
Pos2d pos = posInfo.cgetSmallBottleBufferPos(group.off, i);
hbotCheckAndMoveTo(new Pos3d(pos.x, pos.y, posInfo.posTestZ));
if (!testScriptWorkFlag) {
break;
}
}
}
@HardwareServiceAction(name = "测试所有探测物质位置", group = "测试脚本")
public void testAllDetectMaterialPos(ConsumableGroup group) throws HardwareException, InterruptedException {
testScriptWorkFlag = true;
BottleGroupsPosInfo posInfo = getBottleBufferPosInfo();
for (int i = 0; i < BottlesPosInfo.cgetMAX(); i++) {
Pos2d pos = posInfo.cgetDetectMaterialPos(group.off, i);
hbotCheckAndMoveTo(new Pos3d(pos.x, pos.y, posInfo.posTestZ));
if (!testScriptWorkFlag) {
break;
}
}
}
@HardwareServiceAction(name = "停止测试脚本", group = "测试脚本")
public void testTakeAllTipStop() throws HardwareException, InterruptedException {
testScriptWorkFlag = false;
}
@HardwareServiceStatus(name = "Z轴光电⬆")
public Boolean getZPPS() throws HardwareException {

134
src/main/java/a8k/service/hardware/TestScript.java

@ -0,0 +1,134 @@
package a8k.service.hardware;
import a8k.ConsumableGroup;
import a8k.appbean.HardwareException;
import a8k.appbean.cfg.*;
import a8k.appbean.ecode.AppRet;
import a8k.canbus.A8kCanBusService;
import a8k.canbus.protocol.A8kEcode;
import a8k.canbus.protocol.MId;
import a8k.canbus.protocol.RegIndex;
import a8k.utils.HardwareParamReader;
import a8k.utils.HardwareService;
import a8k.utils.HardwareServiceAction;
import a8k.utils.HardwareServiceParams;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
@HardwareService(name = "测试脚本")
@HardwareServiceParams(service = TestScript.class)
public class TestScript {
static Logger logger = LoggerFactory.getLogger(TestScript.class);
@Resource
A8kCanBusService canBus;
@Resource
CommonHardwareOpeartion comHardwareOpera;
@Resource
ApplicationContext appCxt;
@Resource
HbotControlService hbotcs;
HardwareParamReader settingReader = new HardwareParamReader(HbotControlService.class);
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 测试
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Boolean testScriptWorkFlag = false;
@HardwareServiceAction(name = "停止测试脚本", group = "控制")
public void testTakeAllTipStop() throws HardwareException, InterruptedException {
testScriptWorkFlag = false;
}
@HardwareServiceAction(name = "取放Tip-单步", group = "Hbot测试脚本")
public AppRet<Boolean> takeTipTestStep(Integer tipgroup, Integer index) throws HardwareException, InterruptedException {
var ret = hbotcs.takeTip(tipgroup, index);
TipPickUpPosInfo tipPos = hbotcs.getTipPickUpPosInfo();
canBus.stepMotorEasyMoveToBlock(MId.PipetteModZM, tipPos.getPickUpZPos(tipgroup) - 100, hbotcs.getActionOvertime());
canBus.pipetteCtrlPutTipBlock(MId.PipetteMod);
if (canBus.moduleGetReg(MId.PipetteMod, RegIndex.kreg_pipette_tip_state) == 1) {
throw new HardwareException(A8kEcode.PutTipFail);
}
canBus.stepMotorEasyMoveToZeroPointQuickBlock(MId.PipetteModZM, hbotcs.getActionOvertime());
return ret;
}
@HardwareServiceAction(name = "取放Tip-全部", group = "Hbot测试脚本")
public AppRet<Map<String, String>> testTakeAllTip(Integer groupId, Integer startFrom) throws HardwareException, InterruptedException {
// ObjectMapper mapper = new ObjectMapper();
testScriptWorkFlag = true;
Map<String, String> result = new HashMap<>();
for (int i = startFrom; i < TipPickUpPosInfo.cgetTipNum(); i++) {
var ret = takeTipTestStep(groupId, i);
if (!ret.getData()) {
throw new HardwareException(A8kEcode.TakeTipFail);
}
result.put("Tip" + i, ret.getData() ? "suc" : "fail");
logger.info("Take Tip {}-{} => {}", groupId, i, ret.getData());
if (!testScriptWorkFlag) {
break;
}
}
return AppRet.success(result);
}
@HardwareServiceAction(name = "测试所有小瓶缓冲液位置", group = "Hbot测试脚本")
public void testAllLittleBottleBufferPos(ConsumableGroup group) throws HardwareException, InterruptedException {
testScriptWorkFlag = true;
BottleGroupsPosInfo posInfo = hbotcs.getBottleBufferPosInfo();
for (int i = 0; i < BottlesPosInfo.cgetMAX(); i++) {
BottleGroupsPosInfo pos = hbotcs.getBottleBufferPosInfo();
hbotcs.hbotMoveToSmallBottleGroup(group, i);
canBus.stepMotorEasyMoveToBlock(MId.PipetteModZM, pos.posTestZ, hbotcs.getActionOvertime());
canBus.stepMotorEasyMoveToZeroPointQuickBlock(MId.PipetteModZM, hbotcs.getActionOvertime());
if (!testScriptWorkFlag) {
break;
}
}
}
@HardwareServiceAction(name = "测试所有探测物质位置", group = "Hbot测试脚本")
public void testAllDetectMaterialPos(ConsumableGroup group) throws HardwareException, InterruptedException {
testScriptWorkFlag = true;
for (int i = 0; i < BottlesPosInfo.cgetMAX(); i++) {
BottleGroupsPosInfo pos = hbotcs.getBottleBufferPosInfo();
hbotcs.hbotMoveToDetectMaterialPos(group, i);
canBus.stepMotorEasyMoveToBlock(MId.PipetteModZM, pos.posTestZ, hbotcs.getActionOvertime());
canBus.stepMotorEasyMoveToZeroPointQuickBlock(MId.PipetteModZM, hbotcs.getActionOvertime());
if (!testScriptWorkFlag) {
break;
}
}
}
@HardwareServiceAction(name = "测试所有大瓶缓冲液位置", group = "Hbot测试脚本")
public void testAllBigBottleBufferPos() throws HardwareException, InterruptedException {
testScriptWorkFlag = true;
// 遍历枚举 ConsumableGroup
for (ConsumableGroup group : ConsumableGroup.values()) {
hbotcs.hbotMoveToLargeBottleGroup(group);
canBus.stepMotorEasyMoveByBlock(MId.PipetteModZM, 100, hbotcs.getActionOvertime());
canBus.stepMotorEasyMoveToZeroPointQuickBlock(MId.PipetteModZM, hbotcs.getActionOvertime());
if (!testScriptWorkFlag) {
break;
}
}
}
}

BIN
zhaohe_app.db

Loading…
Cancel
Save