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