38 changed files with 602 additions and 116 deletions
-
2appresource/static/engineer/css/app.521f1f85.css
-
2appresource/static/engineer/index.html
-
2appresource/static/engineer/js/app.15f44a8f.js
-
1appresource/static/engineer/js/app.15f44a8f.js.map
-
2appresource/static/engineer/js/app.6b28088f.js
-
1appresource/static/engineer/js/app.6b28088f.js.map
-
6appresource/static/engineer/js/chunk-vendors.a96a0e7f.js
-
2appresource/static/engineer/js/chunk-vendors.a96a0e7f.js.map
-
14src/main/java/a8k/app/a8ktype/appevent/MessageBoxUpdateEvent.java
-
8src/main/java/a8k/app/a8ktype/others/checkpoint/CheckResult.java
-
10src/main/java/a8k/app/a8ktype/others/checkpoint/Checkpoint.java
-
3src/main/java/a8k/app/a8ktype/state/OptScanModule.java
-
1src/main/java/a8k/app/a8ktype/state/enumtype/IncubationSubTankState.java
-
3src/main/java/a8k/app/a8ktype/type/ConsumablesOneChannelScanResultPacket.java
-
1src/main/java/a8k/app/a8ktype/type/ConsumablesScanReport.java
-
2src/main/java/a8k/app/a8ktype/ui/ApiRet.java
-
3src/main/java/a8k/app/controler/api/v1/app/ctrl/DeviceInit.java
-
11src/main/java/a8k/app/controler/api/v1/app/ws/AppWebSocketEndpointMgr.java
-
7src/main/java/a8k/app/factory/ZAppPromoptFactory.java
-
34src/main/java/a8k/app/hardware/basedriver/A8kCanBusService.java
-
8src/main/java/a8k/app/hardware/driver/TemperatureControlDriver.java
-
1src/main/java/a8k/app/hardware/type/a8kcanprotocol/A8kEcode.java
-
30src/main/java/a8k/app/i18n/Internationalization.java
-
2src/main/java/a8k/app/service/background/SensorDataUpdateService.java
-
3src/main/java/a8k/app/service/bases/FrontEndEventRouter.java
-
34src/main/java/a8k/app/service/lowerctrl/DeviceInitCtrlService.java
-
8src/main/java/a8k/app/service/lowerctrl/ProjIDCardCtrlAndMonitorService.java
-
47src/main/java/a8k/app/service/mainctrl/AppConsumablesScanService.java
-
15src/main/java/a8k/app/service/statemgr/ConsumablesMgrService.java
-
28src/main/java/a8k/app/service/statemgr/IncubationPlateStateMgrService.java
-
2src/main/java/a8k/app/service/statemgr/OptScanModuleStateMgrService.java
-
11src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java
-
283src/main/java/a8k/extui/page/driver/LowLevelBoardVersionPreviewPage.java
-
58src/main/java/a8k/extui/page/stress_test/PipetteGunStressTest.java
-
5src/main/resources/application.yml
@ -1,4 +1,4 @@ |
|||
.vjs-tree-brackets{cursor:pointer}.vjs-tree-brackets:hover{color:#1890ff}.vjs-check-controller{position:absolute;left:0}.vjs-check-controller.is-checked .vjs-check-controller-inner{background-color:#1890ff;border-color:#0076e4}.vjs-check-controller.is-checked .vjs-check-controller-inner.is-checkbox:after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.vjs-check-controller.is-checked .vjs-check-controller-inner.is-radio:after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.vjs-check-controller .vjs-check-controller-inner{display:inline-block;position:relative;border:1px solid #bfcbd9;border-radius:2px;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box;width:16px;height:16px;background-color:#fff;z-index:1;cursor:pointer;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.vjs-check-controller .vjs-check-controller-inner:after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:2px solid #fff;border-left:0;border-top:0;height:8px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:4px;-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) .05s,-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;-webkit-transform-origin:center;transform-origin:center}.vjs-check-controller .vjs-check-controller-inner.is-radio{border-radius:100%}.vjs-check-controller .vjs-check-controller-inner.is-radio:after{border-radius:100%;height:4px;background-color:#fff;left:50%;top:50%}.vjs-check-controller .vjs-check-controller-original{opacity:0;outline:none;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.vjs-carets{position:absolute;right:0;cursor:pointer}.vjs-carets svg{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.vjs-carets:hover{color:#1890ff}.vjs-carets-close{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.vjs-tree-node{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;line-height:20px}.vjs-tree-node.has-carets{padding-left:15px}.vjs-tree-node.has-carets.has-selector,.vjs-tree-node.has-selector{padding-left:30px}.vjs-tree-node.is-highlight,.vjs-tree-node:hover{background-color:#e6f7ff}.vjs-tree-node .vjs-indent{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.vjs-tree-node .vjs-indent-unit{width:1em}.vjs-tree-node .vjs-indent-unit.has-line{border-left:1px dashed #bfcbd9}.vjs-tree-node.dark.is-highlight,.vjs-tree-node.dark:hover{background-color:#2e4558}.vjs-node-index{position:absolute;right:100%;margin-right:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vjs-colon{white-space:pre}.vjs-comment{color:#bfcbd9}.vjs-value{word-break:break-word}.vjs-value-null,.vjs-value-undefined{color:#d55fde}.vjs-value-boolean,.vjs-value-number{color:#1d8ce0}.vjs-value-string{color:#13ce66}.vjs-tree{font-family:Monaco,Menlo,Consolas,Bitstream Vera Sans Mono,monospace;font-size:14px;text-align:left}.vjs-tree.is-virtual{overflow:auto}.vjs-tree.is-virtual .vjs-tree-node{white-space:nowrap}.wrap-text[data-v-48bc040e]{white-space:pre-wrap;word-wrap:break-word}.max-height[data-v-48bc040e]{max-height:20vh;overflow-y:auto}.group-container[data-v-48bc040e]{height:100%;display:flex;flex-direction:column}.action-param-label[data-v-69612837]{font-size:.6rem;top:-8px;position:absolute;z-index:9;left:5px;padding:0 5px;color:#7b7b7b}.action-button[data-v-69612837],.fixed-length-button[data-v-69612837]{white-space:normal;word-break:break-word}.fixed-length-button[data-v-69612837]{min-width:230px} |
|||
.vjs-tree-brackets{cursor:pointer}.vjs-tree-brackets:hover{color:#1890ff}.vjs-check-controller{position:absolute;left:0}.vjs-check-controller.is-checked .vjs-check-controller-inner{background-color:#1890ff;border-color:#0076e4}.vjs-check-controller.is-checked .vjs-check-controller-inner.is-checkbox:after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.vjs-check-controller.is-checked .vjs-check-controller-inner.is-radio:after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.vjs-check-controller .vjs-check-controller-inner{display:inline-block;position:relative;border:1px solid #bfcbd9;border-radius:2px;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box;width:16px;height:16px;background-color:#fff;z-index:1;cursor:pointer;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.vjs-check-controller .vjs-check-controller-inner:after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:2px solid #fff;border-left:0;border-top:0;height:8px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:4px;-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) .05s,-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;-webkit-transform-origin:center;transform-origin:center}.vjs-check-controller .vjs-check-controller-inner.is-radio{border-radius:100%}.vjs-check-controller .vjs-check-controller-inner.is-radio:after{border-radius:100%;height:4px;background-color:#fff;left:50%;top:50%}.vjs-check-controller .vjs-check-controller-original{opacity:0;outline:none;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.vjs-carets{position:absolute;right:0;cursor:pointer}.vjs-carets svg{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.vjs-carets:hover{color:#1890ff}.vjs-carets-close{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.vjs-tree-node{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;line-height:20px}.vjs-tree-node.has-carets{padding-left:15px}.vjs-tree-node.has-carets.has-selector,.vjs-tree-node.has-selector{padding-left:30px}.vjs-tree-node.is-highlight,.vjs-tree-node:hover{background-color:#e6f7ff}.vjs-tree-node .vjs-indent{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.vjs-tree-node .vjs-indent-unit{width:1em}.vjs-tree-node .vjs-indent-unit.has-line{border-left:1px dashed #bfcbd9}.vjs-tree-node.dark.is-highlight,.vjs-tree-node.dark:hover{background-color:#2e4558}.vjs-node-index{position:absolute;right:100%;margin-right:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vjs-colon{white-space:pre}.vjs-comment{color:#bfcbd9}.vjs-value{word-break:break-word}.vjs-value-null,.vjs-value-undefined{color:#d55fde}.vjs-value-boolean,.vjs-value-number{color:#1d8ce0}.vjs-value-string{color:#13ce66}.vjs-tree{font-family:Monaco,Menlo,Consolas,Bitstream Vera Sans Mono,monospace;font-size:14px;text-align:left}.vjs-tree.is-virtual{overflow:auto}.vjs-tree.is-virtual .vjs-tree-node{white-space:nowrap}.p-style[data-v-6494155a]{white-space:pre;word-break:keep-all;max-height:20vh;overflow-y:auto}.group-container[data-v-6494155a]{height:100%;display:flex;flex-direction:column}.action-param-label[data-v-69612837]{font-size:.6rem;top:-8px;position:absolute;z-index:9;left:5px;padding:0 5px;color:#7b7b7b}.action-button[data-v-69612837],.fixed-length-button[data-v-69612837]{white-space:normal;word-break:break-word}.fixed-length-button[data-v-69612837]{min-width:230px} |
|||
|
|||
/* |
|||
! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com |
@ -1 +1 @@ |
|||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>a8k_webui</title><script defer="defer" src="js/chunk-vendors.5158647c.js"></script><script defer="defer" src="js/app.15f44a8f.js"></script><link href="css/app.ae9236bd.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but a8k_webui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> |
|||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>a8k_webui</title><script defer="defer" src="js/chunk-vendors.a96a0e7f.js"></script><script defer="defer" src="js/app.6b28088f.js"></script><link href="css/app.521f1f85.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but a8k_webui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> |
2
appresource/static/engineer/js/app.15f44a8f.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
1
appresource/static/engineer/js/app.15f44a8f.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2
appresource/static/engineer/js/app.6b28088f.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
1
appresource/static/engineer/js/app.6b28088f.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
6
appresource/static/engineer/js/chunk-vendors.a96a0e7f.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2
appresource/static/engineer/js/chunk-vendors.a96a0e7f.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,14 @@ |
|||
package a8k.app.a8ktype.appevent; |
|||
|
|||
import a8k.app.i18n.Internationalization; |
|||
import a8k.app.service.mainctrl.mainflowctrl.base.A8kActionStepType; |
|||
|
|||
public class MessageBoxUpdateEvent extends AppEvent { |
|||
public String message; |
|||
public Integer overtimes = 0; |
|||
|
|||
public MessageBoxUpdateEvent(String message) { |
|||
super(MessageBoxUpdateEvent.class.getSimpleName()); |
|||
this.message = message; |
|||
} |
|||
} |
@ -1,7 +1,9 @@ |
|||
package a8k.app.a8ktype.others.checkpoint; |
|||
|
|||
import a8k.app.a8ktype.others.CheckPointType; |
|||
|
|||
public class CheckResult { |
|||
public String typechinfo; |
|||
public Enum<?> type; |
|||
public Boolean pass; |
|||
public CheckPointType type; |
|||
public String typechinfo; |
|||
public Boolean pass; |
|||
} |
@ -0,0 +1,283 @@ |
|||
package a8k.extui.page.driver; |
|||
|
|||
import a8k.app.a8ktype.exception.AppException; |
|||
import a8k.app.hardware.basedriver.A8kCanBusService; |
|||
import a8k.app.hardware.type.a8kcanprotocol.MId; |
|||
import a8k.extui.mgr.ExtApiPageMgr; |
|||
import a8k.extui.type.ExtApiStatu; |
|||
import jakarta.annotation.PostConstruct; |
|||
import jakarta.annotation.Resource; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
@Component |
|||
public class LowLevelBoardVersionPreviewPage { |
|||
|
|||
|
|||
@Resource |
|||
ExtApiPageMgr extApiPageMgr; |
|||
|
|||
@Resource |
|||
A8kCanBusService canBus; |
|||
|
|||
public static class VersionInfo { |
|||
public Integer moduleId; |
|||
public String moduleName; |
|||
public Boolean online; |
|||
public String moduleType; |
|||
public Integer version; |
|||
} |
|||
|
|||
Map<MId, VersionInfo> versionInfos = new HashMap<>(); |
|||
// HbotBoard(10, "机械臂板模块"),// |
|||
// HbotM(11, "机械臂XY"),// |
|||
// PlatesBoxBoard(20, "板夹仓模块"),// |
|||
// PlatesBoxYM(21, "板夹仓移动电机"),// |
|||
// PlatesBoxPusherM(22, "板夹仓推杆电机"),// |
|||
// PlatesBoxScanner(23, "板夹仓扫码模组"),// |
|||
// ShakeModBoard(30, "摇匀模组板"),// |
|||
// ShakeModClampingM(31, "试管固定夹爪电机"),// |
|||
// ShakeModGripperZM(32, "摇匀升降电机"),// |
|||
// ShakeModShakeM(33, "试管摇匀电机"),// |
|||
// ShakeModGripperYSV(34, "摇匀前后移动舵机"),// |
|||
// ShakeModGripperSV(35, "摇匀试管帽夹爪舵机"),// |
|||
// ShakeModTubeScanerClampingSV(36, "试管架扫码夹紧舵机"),// |
|||
// ShakeModTubeScanerRotateSV(37, "试管架旋转舵机"),// |
|||
// PlatesBoxTCMBoard(40, "反应板夹温度控制板"),// |
|||
// PlatesBoxTCM(41, "反应板夹温度控制模块"),// |
|||
// WbTubeFanMod(42, "气溶胶风扇"),// |
|||
// IncubatorTCMBoard(50, "温度控制"),// |
|||
// IncubatorTCM(51, "温度控制"),// |
|||
// FeedingModBoard(60, "出入料模块"),// |
|||
// FeedingModInfeedM(61, "入料电机"),// |
|||
// FeedingModXM(62, "试管架平移电机"),// |
|||
// FeedingModOutfeedM(63, "出料电机"),// |
|||
// FeedingModScannerMod(64, "试管架扫码器"),// |
|||
// IncubatorRotateBoard(70, "孵育盘旋转板"),// |
|||
// IncubatorRotateCtrlM(71, "孵育盘旋转"),// |
|||
// PipetteModBoard(80, "机械臂Z轴板"),// |
|||
// PipetteMod(82, "移液枪"),// |
|||
// PipetteModCodeScanner(83, "物料扫码器"),// |
|||
// OptModBoard(90, "光学模组板"),// |
|||
// OptModScannerM(91, "板卡扫描电机"),// |
|||
// OptModPullM(92, "板卡推杆电机"),// |
|||
// OptMod(93, "扫描仪"),// |
|||
// A8kIdCardReaderBoard(100, "A8K读卡器板"),// |
|||
// A8kIdCardReader(101, "A8K读卡器"),// |
|||
|
|||
@ExtApiStatu(name = "", group = "机械臂板模块", order = 1) |
|||
public VersionInfo getHbotBoard() { |
|||
return versionInfos.get(MId.HbotBoard); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "机械臂XY", order = 2) |
|||
public VersionInfo getHbotM() { |
|||
return versionInfos.get(MId.HbotM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "板夹仓模块", order = 3) |
|||
public VersionInfo getPlatesBoxBoard() { |
|||
return versionInfos.get(MId.PlatesBoxBoard); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "板夹仓移动电机", order = 4) |
|||
public VersionInfo getPlatesBoxYM() { |
|||
return versionInfos.get(MId.PlatesBoxYM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "板夹仓推杆电机", order = 5) |
|||
public VersionInfo getPlatesBoxPusherM() { |
|||
return versionInfos.get(MId.PlatesBoxPusherM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "板夹仓扫码模组", order = 6) |
|||
public VersionInfo getPlatesBoxScanner() { |
|||
return versionInfos.get(MId.PlatesBoxScanner); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "摇匀模组板", order = 7) |
|||
public VersionInfo getShakeModBoard() { |
|||
return versionInfos.get(MId.ShakeModBoard); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "试管固定夹爪电机", order = 8) |
|||
public VersionInfo getShakeModClampingM() { |
|||
return versionInfos.get(MId.ShakeModClampingM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "摇匀升降电机", order = 9) |
|||
public VersionInfo getShakeModGripperZM() { |
|||
return versionInfos.get(MId.ShakeModGripperZM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "试管摇匀电机", order = 10) |
|||
public VersionInfo getShakeModShakeM() { |
|||
return versionInfos.get(MId.ShakeModShakeM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "摇匀前后移动舵机", order = 11) |
|||
public VersionInfo getShakeModGripperYSV() { |
|||
return versionInfos.get(MId.ShakeModGripperYSV); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "摇匀试管帽夹爪舵机", order = 12) |
|||
public VersionInfo getShakeModGripperSV() { |
|||
return versionInfos.get(MId.ShakeModGripperSV); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "试管架扫码夹紧舵机", order = 13) |
|||
public VersionInfo getShakeModTubeScanerClampingSV() { |
|||
return versionInfos.get(MId.ShakeModTubeScanerClampingSV); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "试管架旋转舵机", order = 14) |
|||
public VersionInfo getShakeModTubeScanerRotateSV() { |
|||
return versionInfos.get(MId.ShakeModTubeScanerRotateSV); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "反应板夹温度控板", order = 15) |
|||
public VersionInfo getPlatesBoxTCMBoard() { |
|||
return versionInfos.get(MId.PlatesBoxTCMBoard); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "反应板夹温度控制模块", order = 16) |
|||
public VersionInfo getPlatesBoxTCM() { |
|||
return versionInfos.get(MId.PlatesBoxTCM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "气溶胶风扇", order = 17) |
|||
public VersionInfo getWbTubeFanMod() { |
|||
return versionInfos.get(MId.WbTubeFanMod); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "孵育盘温空板", order = 18) |
|||
public VersionInfo getIncubatorTCMBoard() { |
|||
return versionInfos.get(MId.IncubatorTCMBoard); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "孵育盘温控模块", order = 19) |
|||
public VersionInfo getIncubatorTCM() { |
|||
return versionInfos.get(MId.IncubatorTCM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "出入料模块", order = 20) |
|||
public VersionInfo getFeedingModBoard() { |
|||
return versionInfos.get(MId.FeedingModBoard); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "入料电机", order = 21) |
|||
public VersionInfo getFeedingModInfeedM() { |
|||
return versionInfos.get(MId.FeedingModInfeedM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "试管架平移电机", order = 22) |
|||
public VersionInfo getFeedingModXM() { |
|||
return versionInfos.get(MId.FeedingModXM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "出料电机", order = 23) |
|||
public VersionInfo getFeedingModOutfeedM() { |
|||
return versionInfos.get(MId.FeedingModOutfeedM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "试管架扫码器", order = 24) |
|||
public VersionInfo getFeedingModScannerMod() { |
|||
return versionInfos.get(MId.FeedingModScannerMod); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "孵育盘旋转板", order = 25) |
|||
public VersionInfo getIncubatorRotateBoard() { |
|||
return versionInfos.get(MId.IncubatorRotateBoard); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "孵育盘旋转", order = 26) |
|||
public VersionInfo getIncubatorRotateCtrlM() { |
|||
return versionInfos.get(MId.IncubatorRotateCtrlM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "机械臂Z轴板", order = 27) |
|||
public VersionInfo getPipetteModBoard() { |
|||
return versionInfos.get(MId.PipetteModBoard); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "移液枪", order = 28) |
|||
public VersionInfo getPipetteMod() { |
|||
return versionInfos.get(MId.PipetteMod); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "物料扫码器", order = 29) |
|||
public VersionInfo getPipetteModCodeScanner() { |
|||
return versionInfos.get(MId.PipetteModCodeScanner); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "光学模组板", order = 30) |
|||
public VersionInfo getOptModBoard() { |
|||
return versionInfos.get(MId.OptModBoard); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "板卡扫描电机", order = 31) |
|||
public VersionInfo getOptModScannerM() { |
|||
return versionInfos.get(MId.OptModScannerM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "板卡推杆电机", order = 32) |
|||
public VersionInfo getOptModPullM() { |
|||
return versionInfos.get(MId.OptModPullM); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "扫描仪", order = 33) |
|||
public VersionInfo getOptMod() { |
|||
return versionInfos.get(MId.OptMod); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "A8K读卡器板", order = 34) |
|||
public VersionInfo getA8kIdCardReaderBoard() { |
|||
return versionInfos.get(MId.A8kIdCardReaderBoard); |
|||
} |
|||
|
|||
@ExtApiStatu(name = "", group = "A8K读卡器", order = 35) |
|||
public VersionInfo getA8kIdCardReader() { |
|||
return versionInfos.get(MId.A8kIdCardReader); |
|||
} |
|||
|
|||
public void refreshBoardState() { |
|||
var modules = MId.values(); |
|||
for (var module : modules) { |
|||
if (module == MId.NotSet) { |
|||
continue; |
|||
} |
|||
try { |
|||
Integer version = canBus.moduleReadVersion(module); |
|||
String modueType = canBus.moduleReadType(module); |
|||
|
|||
VersionInfo info = new VersionInfo(); |
|||
info.online = true; |
|||
info.moduleType = modueType; |
|||
info.moduleId = module.index; |
|||
info.moduleName = module.chname; |
|||
info.version = version; |
|||
versionInfos.put(module, info); |
|||
|
|||
} catch (AppException e) { |
|||
VersionInfo info = new VersionInfo(); |
|||
info.online = false; |
|||
info.moduleId = module.index; |
|||
info.moduleName = module.chname; |
|||
versionInfos.put(module, info); |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
@PostConstruct |
|||
void init() { |
|||
var page = extApiPageMgr.newPage(this); |
|||
page.addFunction("刷新", this::refreshBoardState); |
|||
extApiPageMgr.addPage(page); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,58 @@ |
|||
package a8k.extui.page.stress_test; |
|||
|
|||
import a8k.app.a8ktype.exception.AppException; |
|||
import a8k.app.hardware.driver.PipetteCtrlDriver; |
|||
import a8k.extui.mgr.ExtApiPageMgr; |
|||
import jakarta.annotation.PostConstruct; |
|||
import jakarta.annotation.Resource; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.scheduling.annotation.Scheduled; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
@Slf4j |
|||
public class PipetteGunStressTest { |
|||
|
|||
@Resource |
|||
PipetteCtrlDriver pipetteCtrlDriver; |
|||
|
|||
@Resource |
|||
ExtApiPageMgr extApiPageMgr; |
|||
|
|||
|
|||
Boolean workFlag = false; |
|||
|
|||
@Scheduled(fixedRate = 10) |
|||
void pressTest() { |
|||
if (!workFlag) { |
|||
return; |
|||
} |
|||
try { |
|||
pipetteCtrlDriver.liquidOperationClearParams(); |
|||
pipetteCtrlDriver.liquidOperationSetGunRunParams(14, 14, 0, 1000, 8000); |
|||
pipetteCtrlDriver.liquidOperationSetZMotorRunParams(0, 0, 123); |
|||
pipetteCtrlDriver.liquidOperationFreshParams(); |
|||
log.info("pressTest"); |
|||
} catch (AppException e) { |
|||
log.error("pressTest error", e); |
|||
} |
|||
} |
|||
|
|||
public void startWork() { |
|||
workFlag = true; |
|||
} |
|||
|
|||
public void stopWork() { |
|||
workFlag = false; |
|||
} |
|||
|
|||
@PostConstruct |
|||
public void init() { |
|||
var page = extApiPageMgr.newPage(this); |
|||
page.addFunction("startWork", this::startWork); |
|||
page.addFunction("stopWork", this::stopWork); |
|||
extApiPageMgr.addPage(page); |
|||
workFlag = false; |
|||
} |
|||
|
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue