3 changed files with 137 additions and 75 deletions
-
78src/main/java/a8k/service/hardware/HbotControlService.java
-
134src/main/java/a8k/service/hardware/TestScript.java
-
BINzhaohe_app.db
@ -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; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue