Browse Source
Merge branch 'master' of http://47.92.195.73:8081/project_boditech_vidas_a8000_v3/a8k_app
tags/v0
Merge branch 'master' of http://47.92.195.73:8081/project_boditech_vidas_a8000_v3/a8k_app
tags/v0
23 changed files with 685 additions and 114 deletions
-
139README.md
-
22src/main/java/a8k/appbean/A8kTubeType.java
-
22src/main/java/a8k/appbean/KeyValType.java
-
19src/main/java/a8k/appbean/LargeBottleBufferPosInfo.java
-
16src/main/java/a8k/appbean/Plates2dCodeScanPosInfo.java
-
13src/main/java/a8k/appbean/Pos2d.java
-
5src/main/java/a8k/appbean/Pos3d.java
-
11src/main/java/a8k/appbean/PosZ.java
-
27src/main/java/a8k/appbean/SmallBottleBufferPosInfo.java
-
25src/main/java/a8k/appbean/TipPickUpPosInfo.java
-
35src/main/java/a8k/appbean/TubeSamplePos.java
-
40src/main/java/a8k/service/db/dao/HbotControlParamsService.java
-
85src/main/java/a8k/service/db/dao/ReactionPlatesTransmitCtrlParamService.java
-
133src/main/java/a8k/service/db/dao/SamplesPreProcessModuleCtrlParamsService.java
-
12src/main/java/a8k/service/db/dao/SamplesPreProcessModuleParameterDao.java
-
7src/main/java/a8k/service/db/entity/A8kTubeInfo.java
-
18src/main/java/a8k/service/db/entity/HardwareServiceSetting.java
-
6src/main/java/a8k/service/db/entity/MotorTubeRackMoveCtrlServiceParameter.java
-
81src/main/java/a8k/service/db/entity/SamplesPreProcessModuleParameter.java
-
21src/main/java/a8k/service/hardware/HbotControlService.java
-
18src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java
-
24代码说明/20240718.txt
@ -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. |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
``` |
||||
|
``` |
@ -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; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
@ -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; |
||||
|
} |
||||
|
|
||||
|
} |
@ -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,//取样深度 |
||||
|
* |
||||
|
* } |
||||
|
*/ |
||||
|
|
||||
|
} |
@ -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; |
||||
|
} |
||||
|
} |
@ -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; |
||||
|
} |
||||
|
|
||||
|
} |
@ -1,10 +1,11 @@ |
|||||
package a8k.appbean; |
package a8k.appbean; |
||||
|
|
||||
public class PosBean { |
|
||||
|
public class Pos3d { |
||||
public int x; |
public int x; |
||||
public int y; |
public int y; |
||||
public int z; |
public int z; |
||||
public PosBean(int x, int y, int z) { |
|
||||
|
|
||||
|
public Pos3d(int x, int y, int z) { |
||||
this.x = x; |
this.x = x; |
||||
this.y = y; |
this.y = y; |
||||
this.z = z; |
this.z = z; |
@ -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; |
||||
|
} |
||||
|
} |
@ -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//探测物质吐液高度 |
||||
|
|
||||
|
* |
||||
|
* } |
||||
|
*/ |
||||
|
|
||||
|
|
||||
|
} |
@ -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, //拾取高度 |
||||
|
* |
||||
|
* |
||||
|
* } |
||||
|
*/ |
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
@ -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, |
||||
|
} |
||||
|
}" |
||||
|
*/ |
||||
|
} |
@ -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丢弃位置 |
||||
|
|
||||
|
} |
@ -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; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
@ -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; |
||||
|
} |
||||
|
} |
@ -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; |
|
||||
} |
|
||||
} |
|
@ -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"; |
||||
|
} |
||||
|
} |
@ -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"; |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,21 @@ |
|||||
|
package a8k.service.hardware; |
||||
|
|
||||
|
/** |
||||
|
* Hbot控制服务 |
||||
|
*/ |
||||
|
public class HbotControlService { |
||||
|
|
||||
|
public void moduleReset() { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
public void moduleEnable() { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
public void moduleDisable() { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
@ -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中,(我没有删,你改完之后再删) |
||||
|
|
||||
|
``` |
Write
Preview
Loading…
Cancel
Save
Reference in new issue