11 changed files with 452 additions and 294 deletions
-
1src/main/java/a8k/app/hardware/driver/MiniServoDriver.java
-
214src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java
-
50src/main/java/a8k/extui/page/measurement/FeedingModMeasurePage.java
-
12src/main/java/a8k/extui/page/measurement/HbotPosMeasurePage.java
-
96src/main/java/a8k/extui/page/measurement/HbotPosMeasurePageBak.java
-
49src/main/java/a8k/extui/page/measurement/IncubatorMeasurePage.java
-
52src/main/java/a8k/extui/page/measurement/OptModMeasurePage.java
-
86src/main/java/a8k/extui/page/measurement/PlateBoxPosMeasurePage.java
-
53src/main/java/a8k/extui/page/measurement/PlatesBoxMeasurePage.java
-
61src/main/java/a8k/extui/page/measurement/ShakeModStepMotorMeasurePage.java
-
72src/main/java/a8k/extui/page/test/verification/P00PosVerifyUitilsPage.java
@ -0,0 +1,50 @@ |
|||
package a8k.extui.page.measurement; |
|||
|
|||
import a8k.app.a8ktype.exception.AppException; |
|||
import a8k.app.hardware.driver.MiniServoDriver; |
|||
import a8k.app.hardware.driver.StepMotorCtrlDriver; |
|||
import a8k.app.hardware.driver.type.MiniServoMId; |
|||
import a8k.app.hardware.driver.type.StepMotorMId; |
|||
import a8k.extui.mgr.ExtApiPageMgr; |
|||
import jakarta.annotation.PostConstruct; |
|||
import jakarta.annotation.Resource; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class FeedingModMeasurePage { |
|||
@Resource |
|||
ExtApiPageMgr extApiPageMgr; |
|||
|
|||
static final Integer overtime = 10000; |
|||
|
|||
|
|||
@Resource |
|||
StepMotorCtrlDriver stepMotorCtrlDriver; |
|||
|
|||
|
|||
@Resource |
|||
MiniServoDriver miniServoDriver; |
|||
|
|||
|
|||
|
|||
public Integer measureFeedingModXMPos() throws AppException { |
|||
return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.FeedingModXM, overtime); |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
@PostConstruct |
|||
public void init() { |
|||
var page = extApiPageMgr.newPage(this); |
|||
|
|||
page.newGroup("入料模块-测量"); |
|||
page.addFunction("平移电机", this::measureFeedingModXMPos); |
|||
|
|||
|
|||
|
|||
extApiPageMgr.addPage(page); |
|||
} |
|||
} |
@ -0,0 +1,96 @@ |
|||
package a8k.extui.page.measurement; |
|||
|
|||
import a8k.app.a8ktype.device.Pos2d; |
|||
import a8k.app.a8ktype.device.Pos3d; |
|||
import a8k.app.a8ktype.exception.AppException; |
|||
import a8k.app.hardware.driver.HbotDriver; |
|||
import a8k.app.hardware.driver.PipetteCtrlDriver; |
|||
import a8k.app.service.lowerctrl.HbotMoveCtrlService; |
|||
import a8k.extui.mgr.ExtApiPageMgr; |
|||
import a8k.extui.type.ExtApiStatu; |
|||
import jakarta.annotation.PostConstruct; |
|||
import jakarta.annotation.Resource; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class HbotPosMeasurePageBak { |
|||
@Resource |
|||
ExtApiPageMgr extApiPageMgr; |
|||
|
|||
@Resource |
|||
HbotDriver hbotDriver; |
|||
|
|||
@Resource |
|||
HbotMoveCtrlService hbotMoveCtrlService; |
|||
|
|||
@Resource |
|||
PipetteCtrlDriver pipetteCtrlDriver; |
|||
|
|||
@ExtApiStatu(name = "Hbot当前坐标") |
|||
public Object readPos() throws AppException { |
|||
return hbotDriver.readPos(); |
|||
} |
|||
|
|||
public void disableHbot() throws AppException { |
|||
hbotDriver.enable(0); |
|||
pipetteCtrlDriver.zMotorEnable(0); |
|||
} |
|||
|
|||
public void enableHbot() throws AppException { |
|||
hbotDriver.enable(1); |
|||
pipetteCtrlDriver.zMotorEnable(1); |
|||
} |
|||
|
|||
public void moveTo(Integer x, Integer y, Integer z) throws AppException { |
|||
hbotDriver.enable(1); |
|||
pipetteCtrlDriver.zMotorEnable(1); |
|||
pipetteCtrlDriver.zMotorMoveZeroBlock(); |
|||
hbotMoveCtrlService.hbotMoveTo(x, y, z); |
|||
} |
|||
|
|||
public void moveBy(Integer dx, Integer dy) throws AppException { |
|||
hbotDriver.enable(1); |
|||
pipetteCtrlDriver.zMotorEnable(1); |
|||
Pos2d pos = hbotDriver.readPos(); |
|||
pos.x += dx; |
|||
pos.y += dy; |
|||
hbotDriver.moveToBlock(pos.x, pos.y); |
|||
} |
|||
|
|||
public Pos3d measurementCurrentPos() throws AppException { |
|||
pipetteCtrlDriver.zMotorMeasureDistance(); |
|||
Pos3d pos = new Pos3d(); |
|||
pos.z = pipetteCtrlDriver.zMotorReadMeasureDistanceResult(); |
|||
pos.x = hbotDriver.readPos().x; |
|||
pos.y = hbotDriver.readPos().y; |
|||
return pos; |
|||
} |
|||
|
|||
|
|||
public Integer readXPos() { |
|||
try { |
|||
return hbotDriver.readPos().x; |
|||
} catch (AppException e) { |
|||
return 0; |
|||
} |
|||
} |
|||
|
|||
public Integer readYPos() { |
|||
try { |
|||
return hbotDriver.readPos().y; |
|||
} catch (AppException e) { |
|||
return 0; |
|||
} |
|||
} |
|||
|
|||
@PostConstruct |
|||
public void init() { |
|||
var page = extApiPageMgr.newPage(this); |
|||
page.addFunction("使能HBOT", this::enableHbot); |
|||
page.addFunction("失能HBOT", this::disableHbot); |
|||
page.addFunction("移动到", this::moveTo).setParamVal("x", this::readXPos).setParamVal("y", this::readYPos); |
|||
page.addFunction("相对移动", this::moveBy).setParamVal("dx", 0).setParamVal("dy", 0); |
|||
page.addFunction("测量当前位置", this::measurementCurrentPos); |
|||
extApiPageMgr.addPage(page); |
|||
} |
|||
} |
@ -0,0 +1,49 @@ |
|||
package a8k.extui.page.measurement; |
|||
|
|||
import a8k.app.a8ktype.exception.AppException; |
|||
import a8k.app.hardware.driver.MiniServoDriver; |
|||
import a8k.app.hardware.driver.StepMotorCtrlDriver; |
|||
import a8k.app.hardware.driver.type.MiniServoMId; |
|||
import a8k.app.hardware.driver.type.StepMotorMId; |
|||
import a8k.extui.mgr.ExtApiPageMgr; |
|||
import jakarta.annotation.PostConstruct; |
|||
import jakarta.annotation.Resource; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class IncubatorMeasurePage { |
|||
@Resource |
|||
ExtApiPageMgr extApiPageMgr; |
|||
|
|||
static final Integer overtime = 10000; |
|||
|
|||
|
|||
@Resource |
|||
StepMotorCtrlDriver stepMotorCtrlDriver; |
|||
|
|||
|
|||
@Resource |
|||
MiniServoDriver miniServoDriver; |
|||
|
|||
|
|||
|
|||
|
|||
public Integer measureIncubatorRotateCtrlMPos() throws AppException { |
|||
// return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.IncubatorRotateCtrlM, overtime); |
|||
return stepMotorCtrlDriver.stepMotorReadPos(StepMotorMId.IncubatorRotateCtrlM); |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
@PostConstruct |
|||
public void init() { |
|||
var page = extApiPageMgr.newPage(this); |
|||
|
|||
|
|||
page.newGroup("孵化模组-测量"); |
|||
page.addFunction("旋转电机", this::measureIncubatorRotateCtrlMPos); |
|||
|
|||
extApiPageMgr.addPage(page); |
|||
} |
|||
} |
@ -0,0 +1,52 @@ |
|||
package a8k.extui.page.measurement; |
|||
|
|||
import a8k.app.a8ktype.exception.AppException; |
|||
import a8k.app.hardware.driver.MiniServoDriver; |
|||
import a8k.app.hardware.driver.StepMotorCtrlDriver; |
|||
import a8k.app.hardware.driver.type.MiniServoMId; |
|||
import a8k.app.hardware.driver.type.StepMotorMId; |
|||
import a8k.extui.mgr.ExtApiPageMgr; |
|||
import jakarta.annotation.PostConstruct; |
|||
import jakarta.annotation.Resource; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class OptModMeasurePage { |
|||
@Resource |
|||
ExtApiPageMgr extApiPageMgr; |
|||
|
|||
static final Integer overtime = 10000; |
|||
|
|||
|
|||
@Resource |
|||
StepMotorCtrlDriver stepMotorCtrlDriver; |
|||
|
|||
|
|||
@Resource |
|||
MiniServoDriver miniServoDriver; |
|||
|
|||
|
|||
public Integer measureOptModScannerMPos() throws AppException { |
|||
return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.OptModScannerM, overtime); |
|||
} |
|||
|
|||
public Integer measureOptModPullMPos() throws AppException { |
|||
return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.OptModPullM, overtime); |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
@PostConstruct |
|||
public void init() { |
|||
var page = extApiPageMgr.newPage(this); |
|||
|
|||
|
|||
|
|||
page.newGroup("光学模组-测量"); |
|||
page.addFunction("扫描电机", this::measureOptModScannerMPos); |
|||
page.addFunction("拉板电机", this::measureOptModPullMPos); |
|||
|
|||
extApiPageMgr.addPage(page); |
|||
} |
|||
} |
@ -1,86 +0,0 @@ |
|||
package a8k.extui.page.measurement; |
|||
|
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class PlateBoxPosMeasurePage { |
|||
// @Resource |
|||
// ExtApiPageMgr extApiPageMgr; |
|||
// |
|||
// @Resource |
|||
// HbotDriver hbotDriver; |
|||
// |
|||
// @Resource |
|||
// HbotMoveCtrlService hbotMoveCtrlService; |
|||
// |
|||
// @Resource |
|||
// PipetteCtrlDriver pipetteCtrlDriver; |
|||
// |
|||
// @ExtApiStatu(name = "Hbot当前坐标") |
|||
// public Object readPos() throws AppException { |
|||
// return hbotDriver.readPos(); |
|||
// } |
|||
// |
|||
// public void disableHbot() throws AppException { |
|||
// hbotDriver.enable(0); |
|||
// pipetteCtrlDriver.zMotorEnable(0); |
|||
// } |
|||
// |
|||
// public void enableHbot() throws AppException { |
|||
// hbotDriver.enable(1); |
|||
// pipetteCtrlDriver.zMotorEnable(1); |
|||
// } |
|||
// |
|||
// public void moveTo(Integer x, Integer y, Integer z) throws AppException { |
|||
// hbotDriver.enable(1); |
|||
// pipetteCtrlDriver.zMotorEnable(1); |
|||
// pipetteCtrlDriver.zMotorMoveZeroBlock(); |
|||
// hbotMoveCtrlService.hbotMoveTo(x, y, z); |
|||
// } |
|||
// |
|||
// public void moveBy(Integer dx, Integer dy) throws AppException { |
|||
// hbotDriver.enable(1); |
|||
// pipetteCtrlDriver.zMotorEnable(1); |
|||
// Pos2d pos = hbotDriver.readPos(); |
|||
// pos.x += dx; |
|||
// pos.y += dy; |
|||
// hbotDriver.moveToBlock(pos.x, pos.y); |
|||
// } |
|||
// |
|||
// public Pos3d measurementCurrentPos() throws AppException { |
|||
// pipetteCtrlDriver.zMotorMeasureDistance(); |
|||
// Pos3d pos = new Pos3d(); |
|||
// pos.z = pipetteCtrlDriver.zMotorReadMeasureDistanceResult(); |
|||
// pos.x = hbotDriver.readPos().x; |
|||
// pos.y = hbotDriver.readPos().y; |
|||
// return pos; |
|||
// } |
|||
// |
|||
// |
|||
// public Integer readXPos() { |
|||
// try { |
|||
// return hbotDriver.readPos().x; |
|||
// } catch (AppException e) { |
|||
// return 0; |
|||
// } |
|||
// } |
|||
// |
|||
// public Integer readYPos() { |
|||
// try { |
|||
// return hbotDriver.readPos().y; |
|||
// } catch (AppException e) { |
|||
// return 0; |
|||
// } |
|||
// } |
|||
// |
|||
// @PostConstruct |
|||
// public void init() { |
|||
// var page = extApiPageMgr.newPage(this); |
|||
// page.addFunction("使能HBOT", this::enableHbot); |
|||
// page.addFunction("失能HBOT", this::disableHbot); |
|||
// page.addFunction("移动到", this::moveTo).setParamVal("x", this::readXPos).setParamVal("y", this::readYPos); |
|||
// page.addFunction("相对移动", this::moveBy).setParamVal("dx", 0).setParamVal("dy", 0); |
|||
// page.addFunction("测量当前位置", this::measurementCurrentPos); |
|||
// extApiPageMgr.addPage(page); |
|||
// } |
|||
} |
@ -0,0 +1,53 @@ |
|||
package a8k.extui.page.measurement; |
|||
|
|||
import a8k.app.a8ktype.exception.AppException; |
|||
import a8k.app.hardware.driver.MiniServoDriver; |
|||
import a8k.app.hardware.driver.StepMotorCtrlDriver; |
|||
import a8k.app.hardware.driver.type.MiniServoMId; |
|||
import a8k.app.hardware.driver.type.StepMotorMId; |
|||
import a8k.extui.mgr.ExtApiPageMgr; |
|||
import jakarta.annotation.PostConstruct; |
|||
import jakarta.annotation.Resource; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class PlatesBoxMeasurePage { |
|||
@Resource |
|||
ExtApiPageMgr extApiPageMgr; |
|||
|
|||
static final Integer overtime = 10000; |
|||
|
|||
|
|||
@Resource |
|||
StepMotorCtrlDriver stepMotorCtrlDriver; |
|||
|
|||
|
|||
@Resource |
|||
MiniServoDriver miniServoDriver; |
|||
|
|||
|
|||
public Integer measurePlatesBoxYMPos() throws AppException { |
|||
return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.PlatesBoxYM, overtime); |
|||
} |
|||
|
|||
public Integer measurePlatesBoxPusherMPos() throws AppException { |
|||
return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.PlatesBoxPusherM, overtime); |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
@PostConstruct |
|||
public void init() { |
|||
var page = extApiPageMgr.newPage(this); |
|||
|
|||
|
|||
page.newGroup("板夹仓模组-测量"); |
|||
page.addFunction("仓位置切换电机", this::measurePlatesBoxYMPos); |
|||
page.addFunction("推板电机", this::measurePlatesBoxPusherMPos); |
|||
|
|||
|
|||
extApiPageMgr.addPage(page); |
|||
} |
|||
} |
@ -0,0 +1,61 @@ |
|||
package a8k.extui.page.measurement; |
|||
|
|||
import a8k.app.a8ktype.exception.AppException; |
|||
import a8k.app.hardware.driver.MiniServoDriver; |
|||
import a8k.app.hardware.driver.StepMotorCtrlDriver; |
|||
import a8k.app.hardware.driver.type.MiniServoMId; |
|||
import a8k.app.hardware.driver.type.StepMotorMId; |
|||
import a8k.extui.mgr.ExtApiPageMgr; |
|||
import jakarta.annotation.PostConstruct; |
|||
import jakarta.annotation.Resource; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class ShakeModStepMotorMeasurePage { |
|||
@Resource |
|||
ExtApiPageMgr extApiPageMgr; |
|||
|
|||
static final Integer overtime = 10000; |
|||
|
|||
|
|||
@Resource |
|||
StepMotorCtrlDriver stepMotorCtrlDriver; |
|||
|
|||
|
|||
@Resource |
|||
MiniServoDriver miniServoDriver; |
|||
|
|||
public Integer measureShakeModClampingMPos() throws AppException { |
|||
return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.ShakeModClampingM, overtime); |
|||
} |
|||
|
|||
public Integer measureShakeModGripperZMPos() throws AppException { |
|||
return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.ShakeModGripperZM, overtime); |
|||
} |
|||
|
|||
public Integer measureShakeModGripperYSVPos() throws AppException { |
|||
Integer pos = miniServoDriver.miniServoReadPos(MiniServoMId.ShakeModGripperYSV); |
|||
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 0); |
|||
return pos; |
|||
} |
|||
|
|||
public Integer measureShakeModGripperSVPos() throws AppException { |
|||
Integer pos = miniServoDriver.miniServoReadPos(MiniServoMId.ShakeModGripperSV); |
|||
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 0); |
|||
return pos; |
|||
} |
|||
|
|||
@PostConstruct |
|||
public void init() { |
|||
var page = extApiPageMgr.newPage(this); |
|||
|
|||
page.newGroup("摇匀模组-测量"); |
|||
page.addFunction("升降电机", this::measureShakeModGripperZMPos); |
|||
page.addFunction("前后平移伺服", this::measureShakeModGripperYSVPos); |
|||
page.addFunction("试管夹紧电机", this::measureShakeModClampingMPos); |
|||
page.addFunction("夹爪伺服", this::measureShakeModGripperSVPos); |
|||
|
|||
|
|||
extApiPageMgr.addPage(page); |
|||
} |
|||
} |
@ -1,72 +0,0 @@ |
|||
package a8k.extui.page.test.verification; |
|||
|
|||
import a8k.app.a8ktype.exception.AppException; |
|||
import a8k.app.a8ktype.others.checkpoint.CheckResult; |
|||
import a8k.app.hardware.driver.StepMotorCtrlDriver; |
|||
import a8k.app.hardware.driver.type.StepMotorMId; |
|||
import a8k.app.service.lowerctrl.DeviceInitCtrlService; |
|||
import a8k.extui.mgr.ExtApiPageMgr; |
|||
import a8k.extui.type.ExtUIPageCfg; |
|||
import jakarta.annotation.PostConstruct; |
|||
import jakarta.annotation.Resource; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Component |
|||
@Slf4j |
|||
public class P00PosVerifyUitilsPage { |
|||
@Resource |
|||
DeviceInitCtrlService deviceInitCtrlService; |
|||
@Resource |
|||
StepMotorCtrlDriver stepMotorCtrlDriver; |
|||
|
|||
|
|||
@Resource |
|||
ExtApiPageMgr extApiPageMgr; |
|||
|
|||
// |
|||
// 基础操作 |
|||
// |
|||
|
|||
public String initDevice() throws AppException { |
|||
List<CheckResult> result = deviceInitCtrlService.initDevice(); |
|||
for (CheckResult checkResult : result) { |
|||
if (!checkResult.pass) { |
|||
return String.format("初始化失败:[%s]不通过", checkResult.info); |
|||
} |
|||
} |
|||
return "初始化成功"; |
|||
} |
|||
|
|||
public Boolean releaseTube() throws AppException { |
|||
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, 1); |
|||
stepMotorCtrlDriver.stepMotorEasyMoveByBlock(StepMotorMId.ShakeModClampingM, 10, 1000); |
|||
return true; |
|||
} |
|||
|
|||
public Boolean enableAllMotor() throws AppException { |
|||
deviceInitCtrlService.enableAllMotor(); |
|||
return true; |
|||
} |
|||
|
|||
public Boolean disableAllMotor() throws AppException { |
|||
deviceInitCtrlService.disableAllMotor(); |
|||
return true; |
|||
} |
|||
|
|||
@PostConstruct |
|||
void init() { |
|||
ExtUIPageCfg cfg = extApiPageMgr.newPage(this); |
|||
cfg.newGroup("初始化"); |
|||
cfg.addFunction("初始化设备", this::initDevice); |
|||
cfg.addFunction("释放试管", this::releaseTube); |
|||
cfg.newGroup("电机批量操作"); |
|||
cfg.addFunction("使能所有电机", this::enableAllMotor); |
|||
cfg.addFunction("失能所有电机", this::disableAllMotor); |
|||
extApiPageMgr.addPage(cfg); |
|||
} |
|||
|
|||
|
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue