From 447aa2cd90cca6849178f0268cc3f8248bf1fc52 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 18 Jul 2024 02:25:45 +0800 Subject: [PATCH] update --- README.md | 139 +++++++++++++++++++++ src/main/java/a8k/appbean/A8kTubeType.java | 22 ++++ src/main/java/a8k/appbean/KeyValType.java | 22 ++++ .../java/a8k/appbean/LargeBottleBufferPosInfo.java | 19 +++ .../java/a8k/appbean/Plates2dCodeScanPosInfo.java | 16 +++ src/main/java/a8k/appbean/Pos2d.java | 13 ++ src/main/java/a8k/appbean/Pos3d.java | 13 ++ src/main/java/a8k/appbean/PosBean.java | 12 -- src/main/java/a8k/appbean/PosZ.java | 11 ++ .../java/a8k/appbean/SmallBottleBufferPosInfo.java | 27 ++++ src/main/java/a8k/appbean/TipPickUpPosInfo.java | 25 ++++ src/main/java/a8k/appbean/TubeSamplePos.java | 35 ++++++ .../service/db/dao/HbotControlParamsService.java | 40 ++++++ .../ReactionPlatesTransmitCtrlParamService.java | 85 +++++++++++++ .../SamplesPreProcessModuleCtrlParamsService.java | 133 ++++++++++++++++++++ .../dao/SamplesPreProcessModuleParameterDao.java | 12 -- .../service/db/entity/HardwareServiceSetting.java | 18 +++ .../MotorTubeRackMoveCtrlServiceParameter.java | 3 - .../entity/SamplesPreProcessModuleParameter.java | 81 ------------ .../a8k/service/hardware/HbotControlService.java | 21 ++++ .../ReactionPlatesTransmitCtrlService.java | 1 + 代码说明/20240718.txt | 24 ++++ 22 files changed, 664 insertions(+), 108 deletions(-) create mode 100644 README.md create mode 100644 src/main/java/a8k/appbean/A8kTubeType.java create mode 100644 src/main/java/a8k/appbean/KeyValType.java create mode 100644 src/main/java/a8k/appbean/LargeBottleBufferPosInfo.java create mode 100644 src/main/java/a8k/appbean/Plates2dCodeScanPosInfo.java create mode 100644 src/main/java/a8k/appbean/Pos2d.java create mode 100644 src/main/java/a8k/appbean/Pos3d.java delete mode 100644 src/main/java/a8k/appbean/PosBean.java create mode 100644 src/main/java/a8k/appbean/PosZ.java create mode 100644 src/main/java/a8k/appbean/SmallBottleBufferPosInfo.java create mode 100644 src/main/java/a8k/appbean/TipPickUpPosInfo.java create mode 100644 src/main/java/a8k/appbean/TubeSamplePos.java create mode 100644 src/main/java/a8k/service/db/dao/HbotControlParamsService.java create mode 100644 src/main/java/a8k/service/db/dao/ReactionPlatesTransmitCtrlParamService.java create mode 100644 src/main/java/a8k/service/db/dao/SamplesPreProcessModuleCtrlParamsService.java delete mode 100644 src/main/java/a8k/service/db/dao/SamplesPreProcessModuleParameterDao.java create mode 100644 src/main/java/a8k/service/db/entity/HardwareServiceSetting.java delete mode 100644 src/main/java/a8k/service/db/entity/SamplesPreProcessModuleParameter.java create mode 100644 src/main/java/a8k/service/hardware/HbotControlService.java create mode 100644 代码说明/20240718.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..4c9d9e1 --- /dev/null +++ b/README.md @@ -0,0 +1,139 @@ +``` +==========================模块参数-维护=========================== + +参数类型,模块参数: + 模块名称,模块ID,参数ID,参数数值,参数名称 + +前端页面: + + 一级菜单,模块名称 + 二级菜单,参数列表 + + 功能: + 改,查,刷新到硬件 + +后端逻辑: + 执行刷新到硬件后,参数全刷新到底层硬件 + + 设备开机后, + 首先自动刷新所有参数到硬件。 + +``` + + +``` +硬件服务目标 + 单独调试每一个业务动作 + +硬件服务参数维护 + 1. 每个服务一个数据库 + 2. 数据格式为key-val + +表单格式: + key,chName,valType,val + + +valType: + float + int + bool + Pos3d + RectangularPosSet + +``` + + +前后端交互: +``` + 前端的代码: + 1. 弹出提示框 + 2. 用户交互 + 3. 提交数据 + 4. 触发机械动作 + + 后端代码:业务逻辑 + + 约定: + 1.只要是触发短暂的机械动作,前端均弹出蒙板加载页面。(短暂意味着,不可中断,几分钟的执行完成) + 2.设备主逻辑(非阻塞,调用后端方法) + 启动 + 停止 + 暂停 + + 3.配置提交,无机械动作,直接提交到数据库。 +``` + + +``` +具体业务: + 1. 系统初始化 + 登录后,弹出提示话,询问用户是否进行设备初始化。 + 如何实现: + 页面切换,弹出提示框,用户点击确认,提交初始化请求到后台。 + 后台Service阻塞执行动作,返回执行结果。执行结果中携带是否执行成功。 + + 2. + + +前端: + 1. 弹窗信息提示 + 2. + + +错误信息的展示: + 后端抛出错误事件 + 异常中携带用于展示的错误信息。 + + 后端执行方法,返回错误码,前端直接显示错误码的信息即可。 + 错误码对应的中英文字符串存储在数据库中。 + + 执行动作,需要执行一些前置动作。由前端进行状态检查,确定需要执行前置动作后,弹出提示框,用户点击确认,然后执行动作。 + + 哪些动作需要蒙版: + 1. 非设备启动动作外均需要蒙版 + 2. 项目手动配置中,根据耗材的减少自动更新状态信息。 + 1.总数从后端拿到 + 2.用户每提交和选中一个项目后,向后台提交配置,同时返回剩余量。 + 3. + + *:前端每一次点击,将更新的内容提交到后台,后台返回前端当前页面所有状态信息。(非表单信息) + *: + + + 后台存储: + 耗材总数 + + + +``` + + +``` + +``` +1. 急诊逻辑 + 点击急诊位 + ---> 弹出是否添加急诊 + ---> 点击确认 + ---> 弹出急诊添加涉及到的信息框 + 配置好信息后 ---> 点击添加 + + + +``` + +``` + +1. 执行机械相关的动作都需要加载一个蒙版 +2. 非机械相关的动作,无须蒙版 +3. 每次提交一次请求,都返回两类信息 + 1. 是否弹出错误提示框 + 2. 全部的前端状态信息。 + +4. + + + + +``` +``` diff --git a/src/main/java/a8k/appbean/A8kTubeType.java b/src/main/java/a8k/appbean/A8kTubeType.java new file mode 100644 index 0000000..cbf67f7 --- /dev/null +++ b/src/main/java/a8k/appbean/A8kTubeType.java @@ -0,0 +1,22 @@ +package a8k.appbean; + + +public enum A8kTubeType { + + HighBlood("HighBlood", "0000"), //全血试管 + ShortBlood("ShortBlood", "0000"), //全血试管 + Mini("Mini", "1111"), //迷你试管 + MiniBlood("MiniBlood", "2222"), //阳普管 + BulletTube1P5("BulletTube1P5", "5555"),//子弹头试管1.5mL + BulletTube0P5("BulletTube0P5", "4444"); //子弹头试管0.5mL + + final public String scanCode; + final public String name; + + A8kTubeType(String name, String scanCode) { + this.scanCode = scanCode; + this.name = name; + } + + +} diff --git a/src/main/java/a8k/appbean/KeyValType.java b/src/main/java/a8k/appbean/KeyValType.java new file mode 100644 index 0000000..e660d13 --- /dev/null +++ b/src/main/java/a8k/appbean/KeyValType.java @@ -0,0 +1,22 @@ +package a8k.appbean; + +public enum KeyValType { + Pos3d("Pos3d"),// + Pos2d("Pos2d"),// + Bool("Bool"),// + Int("Int"),// + String("String"),// + LargeBottleBufferPosInfo("LargeBottleBufferPosInfo"),// + Plates2dCodeScanPosInfo("Plates2dCodeScanPosInfo"),// + SmallBottleBufferPosInfo("SmallBottleBufferPosInfo"),// + TipPickUpPosInfo("TipPickUpPosInfo"),// + TubeSamplePos("TubeSamplePos"),// + Float("Float"); + + final public String name; + + KeyValType(String name) { + this.name = name; + } + +} diff --git a/src/main/java/a8k/appbean/LargeBottleBufferPosInfo.java b/src/main/java/a8k/appbean/LargeBottleBufferPosInfo.java new file mode 100644 index 0000000..113d6d6 --- /dev/null +++ b/src/main/java/a8k/appbean/LargeBottleBufferPosInfo.java @@ -0,0 +1,19 @@ +package a8k.appbean; + +public class LargeBottleBufferPosInfo { + /* + * { + * "topLelf":[ + * {"x":x,"y":y} + * ], + * "xinterval":, + * "yinterval":, + * + * "scancodeLineEachRelaPos":dy, //扫码相对每个大屏缓冲液的位置,第一排-dy,第二排dy + * "sampleStartPos":z,//取样开始位置 + * "sampleHight":z,//取样深度 + * + * } + */ + +} diff --git a/src/main/java/a8k/appbean/Plates2dCodeScanPosInfo.java b/src/main/java/a8k/appbean/Plates2dCodeScanPosInfo.java new file mode 100644 index 0000000..11b4b1e --- /dev/null +++ b/src/main/java/a8k/appbean/Plates2dCodeScanPosInfo.java @@ -0,0 +1,16 @@ +package a8k.appbean; + +public class Plates2dCodeScanPosInfo { + + public Pos2d getCh0ScanPos() { + return null; //通道1扫码位置 + } + + public Integer getInterval() { + return 0; + } + + public Pos2d getChScanPos(int chindex) { + return null; + } +} diff --git a/src/main/java/a8k/appbean/Pos2d.java b/src/main/java/a8k/appbean/Pos2d.java new file mode 100644 index 0000000..17c84d8 --- /dev/null +++ b/src/main/java/a8k/appbean/Pos2d.java @@ -0,0 +1,13 @@ +package a8k.appbean; + +public class Pos2d { + + public int x; + public int y; + + public Pos2d(int x, int y) { + this.x = x; + this.y = y; + } + +} diff --git a/src/main/java/a8k/appbean/Pos3d.java b/src/main/java/a8k/appbean/Pos3d.java new file mode 100644 index 0000000..ff8e776 --- /dev/null +++ b/src/main/java/a8k/appbean/Pos3d.java @@ -0,0 +1,13 @@ +package a8k.appbean; + +public class Pos3d { + public int x; + public int y; + public int z; + + public Pos3d(int x, int y, int z) { + this.x = x; + this.y = y; + this.z = z; + } +} diff --git a/src/main/java/a8k/appbean/PosBean.java b/src/main/java/a8k/appbean/PosBean.java deleted file mode 100644 index ec7dafe..0000000 --- a/src/main/java/a8k/appbean/PosBean.java +++ /dev/null @@ -1,12 +0,0 @@ -package a8k.appbean; - -public class PosBean { - public int x; - public int y; - public int z; - public PosBean(int x, int y, int z) { - this.x = x; - this.y = y; - this.z = z; - } -} diff --git a/src/main/java/a8k/appbean/PosZ.java b/src/main/java/a8k/appbean/PosZ.java new file mode 100644 index 0000000..1bc5f5f --- /dev/null +++ b/src/main/java/a8k/appbean/PosZ.java @@ -0,0 +1,11 @@ +package a8k.appbean; + +public class PosZ { + int zpos; + int depth; + + PosZ(int zpos, int depth) { + this.zpos = zpos; + this.depth = depth; + } +} diff --git a/src/main/java/a8k/appbean/SmallBottleBufferPosInfo.java b/src/main/java/a8k/appbean/SmallBottleBufferPosInfo.java new file mode 100644 index 0000000..2f179bb --- /dev/null +++ b/src/main/java/a8k/appbean/SmallBottleBufferPosInfo.java @@ -0,0 +1,27 @@ +package a8k.appbean; + +public class SmallBottleBufferPosInfo { + /* + * { + * "topLelf":[ + * {"x":x,"y":y}, + * {"x":x,"y":y}, + * {"x":x,"y":y}, + * {"x":x,"y":y}, + * {"x":x,"y":y}, + * {"x":x,"y":y} + * ], + * "xinterval":, + * "yinterval":, + * + * "scancodeRelaPos":[dx,dy], + * "piercedZPos":z,//刺破高度 + * "distributeZPos":z,//吐液高度 + * "detectMaterialDistributeZpos":z//探测物质吐液高度 + + * + * } + */ + + +} diff --git a/src/main/java/a8k/appbean/TipPickUpPosInfo.java b/src/main/java/a8k/appbean/TipPickUpPosInfo.java new file mode 100644 index 0000000..9e97cd5 --- /dev/null +++ b/src/main/java/a8k/appbean/TipPickUpPosInfo.java @@ -0,0 +1,25 @@ +package a8k.appbean; + +public class TipPickUpPosInfo { + + /* + * { + * "topLelf":[ + * {"x":x,"y":y}, + * {"x":x,"y":y}, + * {"x":x,"y":y} + * ], + * "xinterval":, + * "yinterval":, + * + * "horizontalPointsNum":30, + * "verticalPointsNum":20, + * "pickUpZPos":100, //拾取高度 + * + * + * } + */ + + + +} diff --git a/src/main/java/a8k/appbean/TubeSamplePos.java b/src/main/java/a8k/appbean/TubeSamplePos.java new file mode 100644 index 0000000..7d75651 --- /dev/null +++ b/src/main/java/a8k/appbean/TubeSamplePos.java @@ -0,0 +1,35 @@ +package a8k.appbean; + +public class TubeSamplePos { + /* + "{ + "sampleXYPos0":[x,y], //非全血试管取样位置 + "sampleXYPos1":[x,y], //全血试管取样位置 + + "HighBlood":{ + "sampleStartPos":1, + "sampleDepth":2, + }, + "ShortBlood":{ + "sampleStartPos":1, + "sampleDepth":2, + } + "Mini":{ + "sampleStartPos":1, + "sampleDepth":2, + } + "MiniBlood":{ + "sampleStartPos":1, + "sampleDepth":2, + } + "BulletTube1P5":{ + "sampleStartPos":1, + "sampleDepth":2, + } + "BulletTube0P5":{ + "sampleStartPos":1, + "sampleDepth":2, + } + }" + */ +} diff --git a/src/main/java/a8k/service/db/dao/HbotControlParamsService.java b/src/main/java/a8k/service/db/dao/HbotControlParamsService.java new file mode 100644 index 0000000..031a4be --- /dev/null +++ b/src/main/java/a8k/service/db/dao/HbotControlParamsService.java @@ -0,0 +1,40 @@ +package a8k.service.db.dao; + +import a8k.appbean.*; + +/** + * XY机械臂控制相关参数访问 + */ +public class HbotControlParamsService { + + Pos3d getReactionPos() { + return null; + } //滴液反应位 + + TipPickUpPosInfo TipPickUpPosInfo() { + return null; + } //TIP组0 位置信息 + + + SmallBottleBufferPosInfo getSmallBottleBufferPosInfo() { + return null; + }//小瓶缓冲液位置 + + + Plates2dCodeScanPosInfo getPlates2dCodeScanPosInfo() { + return null; + }//反应板夹仓位置 + + LargeBottleBufferPosInfo getLargeBottleBufferPosInfo() { + return null; + }//大瓶缓冲液位置 + + Pos3d getEmergencyPos() { + return null; + } //急诊位 + + Pos3d getTipDropPos() { + return null; + } //tip丢弃位置 + +} diff --git a/src/main/java/a8k/service/db/dao/ReactionPlatesTransmitCtrlParamService.java b/src/main/java/a8k/service/db/dao/ReactionPlatesTransmitCtrlParamService.java new file mode 100644 index 0000000..d3d8065 --- /dev/null +++ b/src/main/java/a8k/service/db/dao/ReactionPlatesTransmitCtrlParamService.java @@ -0,0 +1,85 @@ +package a8k.service.db.dao; + +/** + * 反应板夹搬运相关服务访问 + */ +public class ReactionPlatesTransmitCtrlParamService { + + // + + public final String serviceName = "ReactionPlatesTransmitCtrlService"; + + + /* + * 板夹仓相关参数 + */ + public int getPlateBoxChannel0Pos() { + //板夹仓通道0位置 + return 0; + } + + public int getPlateBoxChannelInterval() { + //板夹仓通道间间距 + return 0; + } + + public int getPlatePusherEndPos() { + //板夹仓推杆到位位置 + return 0; + } + + public int getPlatePusherScanerStartPos() { + //推杆扫码开始位置 + return 0; + } + + /* + * 转盘相关位置 + */ + + public int getTurntablePushPos0() { + //转盘仓位0,入板位置 + return 0; + } + + public int getTurntablePullPos0() { + //转盘仓位0,出板位置 + return 0; + } + + public int getTurntableReactionPos0() { + //转盘仓位0,出板位置 + return 0; + } + + public int getTurntablePosInterval() { + //转盘仓位之间间距 + return 0; + } + + /* + * 光学模组相关 + */ + + public int getPullerStandbyPos() { + //获取拉杆待机位置 + return 0; + } + + public int getPullerTargetPos() { + //获取拉杆,目标位 + return 0; + } + + public int getDropPos() { + //获取丢板位置 + return 0; + } + + public int getOptScanScandbyPos() { + //获取拉板,光学模组待机位 + return 0; + } + + +} diff --git a/src/main/java/a8k/service/db/dao/SamplesPreProcessModuleCtrlParamsService.java b/src/main/java/a8k/service/db/dao/SamplesPreProcessModuleCtrlParamsService.java new file mode 100644 index 0000000..e444752 --- /dev/null +++ b/src/main/java/a8k/service/db/dao/SamplesPreProcessModuleCtrlParamsService.java @@ -0,0 +1,133 @@ +package a8k.service.db.dao; + +/** + * 样本预处理相关参数访问 + */ +public class SamplesPreProcessModuleCtrlParamsService { + + /** + * 参数存放在HardwareServiceSetting中, + * 每个参数,依赖于Key+serviceName进行索引 + */ + public final String serviceName = "SamplesPreProcessModuleCtrlService"; + + // 回零超时时间 + public int getMoveToZeroOvertime() { + // 索引为 "SamplesPreProcessModuleCtrlService" "MoveToZeroOvertime" + return 0; + } + + // 执行动作的超时时间,该超时时间适用于当前模块在当前产品中所有动作的最大时间。 + public int getActionOvertime() { + // 索引为 "SamplesPreProcessModuleCtrlService" "MoveToZeroOvertime" + return 0; + } + + /** + * 升降电机相关位置 + */ + + // 高全血试管取帽位置 + public int getHighBlood_TakeCapPos() { + return 0; + } + + // 矮全血试管取帽位置 + public int getShortBlood_TakeCapPos() { + return 0; + } + + // 高试管帽子判断位置 + public int getHighBlood_capJudgePos() { + return 0; + } + + // 矮全血试管帽子判断位置 + public int getShortBlood_capJudgePos() { + return 0; + } + + // 升降电机位置偏移 + public int getElevating_MotorPosOffset() { + return 0; + } + + /* + * 平移电机相关参数 + */ + + // 水平移动电机,待机位置 + public int getHorizontalMotor_standbyPos() { + return 0; + } + + // 水平移动电机,取帽位置 + public int getHorizontalMotor_takeCapPos() { + return 0; + } + + // 水平移动电机,放帽位置 + public int getHorizontalMotor_takePushCapPos() { + return 0; + } + + /* + * 抓手 + */ + + // 抓手舵机,待机位置 + public int getGripperServo_standbyPos() { + return 0; + } + + // 抓手舵机,取帽扭矩 + public int getGripperServo_takeCapTorque() { + return 0; + } + + // 抓手舵机,取试管位置 + public int getGripperServo_takeTubePos() { + return 0; + } + + // 判断是否有帽子的位置阈值 + public int getGripperServo_hatDeterminesPosThres() { + return 0; + } + + /* + * 摇匀电机 + */ + + // 摇匀电机待机位置 + public int getShakeMotor_standbyPos() { + return 0; + } + + // 摇匀电机摇匀角度 + public int getShakeMotor_shakeDegree() { + return 0; + } + + /* + * 夹紧电机 + */ + + // 试管夹紧电机待机位置 + public int getTubeClampMotor_standbyPos() { + return 0; + } + + // 试管夹紧电机夹紧位置 + public int getTubeClampMotor_ClampPos() { + return 0; + } + + /* + * 气溶胶风扇控制参数 + */ + // 气溶胶风扇风力大小(0->100) + public int getAerosolFanLevel() { + return 0; + } +} diff --git a/src/main/java/a8k/service/db/dao/SamplesPreProcessModuleParameterDao.java b/src/main/java/a8k/service/db/dao/SamplesPreProcessModuleParameterDao.java deleted file mode 100644 index 41203a1..0000000 --- a/src/main/java/a8k/service/db/dao/SamplesPreProcessModuleParameterDao.java +++ /dev/null @@ -1,12 +0,0 @@ -package a8k.service.db.dao; - -import a8k.service.db.entity.SamplesPreProcessModuleParameter; -import org.springframework.stereotype.Component; - -@Component -public class SamplesPreProcessModuleParameterDao { - public SamplesPreProcessModuleParameter getParameter() { - //TODO: - return null; - } -} diff --git a/src/main/java/a8k/service/db/entity/HardwareServiceSetting.java b/src/main/java/a8k/service/db/entity/HardwareServiceSetting.java new file mode 100644 index 0000000..b62df30 --- /dev/null +++ b/src/main/java/a8k/service/db/entity/HardwareServiceSetting.java @@ -0,0 +1,18 @@ +package a8k.service.db.entity; + +import com.iflytop.uf.UfActiveRecordField; + +public class HardwareServiceSetting { + @UfActiveRecordField + public String key; + @UfActiveRecordField + public String serviceName; //属于哪个服务的, hardware目录下的类名 + @UfActiveRecordField + public String valType; + @UfActiveRecordField + public String val; + + public static String getTableName() { + return "HardwareServiceSetting" + "Table"; + } +} diff --git a/src/main/java/a8k/service/db/entity/MotorTubeRackMoveCtrlServiceParameter.java b/src/main/java/a8k/service/db/entity/MotorTubeRackMoveCtrlServiceParameter.java index 1f0b270..01eb112 100644 --- a/src/main/java/a8k/service/db/entity/MotorTubeRackMoveCtrlServiceParameter.java +++ b/src/main/java/a8k/service/db/entity/MotorTubeRackMoveCtrlServiceParameter.java @@ -32,9 +32,6 @@ public class MotorTubeRackMoveCtrlServiceParameter { public Integer tubeRackScanCodePos; //试管架扫码位置 @UfActiveRecordField - Integer horizontalMotorOffset; //水平移动电机位置偏移 - - @UfActiveRecordField public Integer horizontalMotorLostStepThresholdVal; //水平电机丢步判断 @UfActiveRecordField diff --git a/src/main/java/a8k/service/db/entity/SamplesPreProcessModuleParameter.java b/src/main/java/a8k/service/db/entity/SamplesPreProcessModuleParameter.java deleted file mode 100644 index 1b00285..0000000 --- a/src/main/java/a8k/service/db/entity/SamplesPreProcessModuleParameter.java +++ /dev/null @@ -1,81 +0,0 @@ -package a8k.service.db.entity; - -import com.iflytop.uf.UfActiveRecordField; - -public class SamplesPreProcessModuleParameter { - - @UfActiveRecordField - public Integer moveToZeroOvertime;// 回零超时时间 - - @UfActiveRecordField - public Integer actionOvertime;// 执行动作的超时时间,该超时时间适用于当前模块在当前产品中所有动作的最大时间。 - - /** - * 升降电机相关位置 - */ - @UfActiveRecordField - public Integer highBlood_TakeCapPos;//高全血试管取帽位置 - - @UfActiveRecordField - public Integer shortBlood_TakeCapPos;//矮全血试管取帽位置 - - @UfActiveRecordField - public Integer highBlood_capJudgePos;//高试管帽子判断位置 - - @UfActiveRecordField - public Integer shortBlood_capJudgePos;//矮全血试管帽子判断位置 - - @UfActiveRecordField - public Integer elevating_MotorPosOffset;//升降电机位置偏移 - - /** - * 水平移动电机 - */ - @UfActiveRecordField - public Integer horizontalMotor_standbyPos;//水平移动电机,待机位置 - - @UfActiveRecordField - public Integer horizontalMotor_takeCapPos; //水平移动电机,取帽位置 - - @UfActiveRecordField - public Integer horizontalMotor_takePushCapPos; //水平移动电机,放帽位置 - - /** - * 取帽舵机 - */ - @UfActiveRecordField - public Integer gripperServo_standbyPos; //抓手舵机,待机位置 - - @UfActiveRecordField - public Integer gripperServo_takeCapTorque; //抓手舵机,取帽扭矩 - - @UfActiveRecordField - public Integer gripperServo_takeTubePos; // 抓手舵机,取试管位置 - - @UfActiveRecordField - public Integer gripperServo_hatDeterminesPosThres; //判断是否有帽子的位置阈值 - - - /** - * 摇匀电机 - */ - @UfActiveRecordField - public Integer shakeMotor_standbyPos; - @UfActiveRecordField - public Integer shakeMotor_shakeDegree; - - /** - * 夹紧电机 - */ - @UfActiveRecordField - public Integer tubeClampMotor_standbyPos; - @UfActiveRecordField - public Integer tubeClampMotor_ClampPos; - - @UfActiveRecordField - public Integer aerosolFanLevel; //气溶胶风扇工作功率 - - public static String getTableName() { - return "SamplesPreProcessModuleParameter" + "Table"; - } -} diff --git a/src/main/java/a8k/service/hardware/HbotControlService.java b/src/main/java/a8k/service/hardware/HbotControlService.java new file mode 100644 index 0000000..95298af --- /dev/null +++ b/src/main/java/a8k/service/hardware/HbotControlService.java @@ -0,0 +1,21 @@ +package a8k.service.hardware; + +/** + * Hbot控制服务 + */ +public class HbotControlService { + + public void moduleReset() { + + } + + public void moduleEnable() { + + } + + public void moduleDisable() { + + } + + +} diff --git a/src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java b/src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java index 728aa6d..f20e647 100644 --- a/src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java +++ b/src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java @@ -3,6 +3,7 @@ package a8k.service.hardware; import a8k.appbean.AppErrorCode; import org.springframework.stereotype.Component; + @Component public class ReactionPlatesTransmitCtrlService { diff --git a/代码说明/20240718.txt b/代码说明/20240718.txt new file mode 100644 index 0000000..aedc53a --- /dev/null +++ b/代码说明/20240718.txt @@ -0,0 +1,24 @@ + +``` + 1.添加下面几种数据类型,每种类型都对应一种json,json的格式已经在对应的类中给出 + Pos3d("Pos3d"),// + Pos2d("Pos2d"),// + Bool("Bool"),// + Int("Int"),// + String("String"),// + LargeBottleBufferPosInfo("LargeBottleBufferPosInfo"),// + Plates2dCodeScanPosInfo("Plates2dCodeScanPosInfo"),// + SmallBottleBufferPosInfo("SmallBottleBufferPosInfo"),// + TipPickUpPosInfo("TipPickUpPosInfo"),// + TubeSamplePos("TubeSamplePos"),// + Float("Float"); + 2.Hbot控制涉及到参数的访问和更改写在,HbotControlParamsService + 3.反应板夹搬运(板夹出仓,转盘转动...,勾取反应板)相关参数的访问和更改写在 ReactionPlatesTransmitCtrlParamService + 4.样本预处理(脱毛盖帽摇匀)涉及到参数的访问和更改写在 SamplesPreProcessModuleCtrlParamsService + + 5.所有硬件控制涉及到的参数都写在HardwareServiceSetting数据库中,数据库中的条目索引,由key+ServiceName作为索引标识。 + + 6.之前写的进出料控制,也改成类似的风格。(这个我没有改) + 7.删除掉试管类型数据库,试管类型信息存储在A8kTubeType枚举中。试管架间距,参数也放在MotorTubeRackMoveCtrlServiceParameterDao中,(我没有删,你改完之后再删) + +``` \ No newline at end of file