Browse Source

feat:指令逻辑添加

master
guoapeng 6 months ago
parent
commit
f7cce8d745
  1. 14
      src/main/java/com/qyft/gd/model/form/CMDForm.java
  2. 119
      src/main/java/com/qyft/gd/service/CMDService.java

14
src/main/java/com/qyft/gd/model/form/CMDForm.java

@ -19,5 +19,19 @@ public class CMDForm {
@Schema(description = "参数")
private Map<String, Object> params;
/*
params : {
// 添加溶液所需字段
tubeNum: 试管编号
pumpId: 溶液id
volume: 容量
// 关于温度
temperature: 温度
// 关于时间
time: 时间
shelfId: 试管架id
}
*/
}

119
src/main/java/com/qyft/gd/service/CMDService.java

@ -11,9 +11,10 @@ import com.qyft.gd.model.vo.WebsocketResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.sql.Array;
import java.util.*;
import java.util.function.Function;
import java.util.function.Supplier;
@Service
public class CMDService {
@ -44,89 +45,125 @@ public class CMDService {
commandMap.put(Commands.GET_LIQUID_AMOUNT, this::getLiquidAmount);
commandMap.put(Commands.MOVE_TUBE, this::moveTube);
}
// 移动单个试管
private Boolean moveTube(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
// 当前溶液数量
private Boolean getLiquidAmount(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
// 机械臂
private Boolean moveMachineArm(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
// 装回盖子
private Boolean putBackCap(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
// 取试管架盖
private Boolean takeOffCap(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
// 移出异常
private Boolean moveToHeatArea(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
// 移至异常
private Boolean moveToUnusual(CMDForm cmdForm) {
//TODO 执行指令
//TODO 获取异常区位置
return true;
}
// 拍照
private Boolean takePhoto(CMDForm cmdForm) {
//TODO 执行指令
return true;
List<Supplier<Boolean>> cmdList = new ArrayList<>();
cmdList.add(() -> deviceService.takePhoto());
return run(cmdList);
}
// 停止加热
private Boolean stopHeat(CMDForm cmdForm) {
//TODO 执行指令
return true;
List<Supplier<Boolean>> cmdList = new ArrayList<>();
cmdList.add(() -> deviceService.stopHeating());
return run(cmdList);
}
// 开始加热
private Boolean startHeat(CMDForm cmdForm) {
//TODO 执行指令
return true;
List<Supplier<Boolean>> cmdList = new ArrayList<>();
cmdList.add(() -> deviceService.startHeating((Integer) cmdForm.getParams().get("time")));
return run(cmdList);
}
// 摇匀
private Boolean shakeUp(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
deviceService.startShaking();
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
deviceService.stopShaking();
}
};
timer.schedule(task, 1000);
return true;
}
// 检查加液位状态(是否被占用)
private Boolean checkActionArea(CMDForm cmdForm) {
//TODO 执行指令
return true;
List<Supplier<Boolean>> cmdList = new ArrayList<>();
return run(cmdList);
}
// 移至加液
private Boolean moveToActionArea(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
List<Supplier<Boolean>> cmdList = new ArrayList<>();
// TODO 加液位是否被占用
cmdList.add(() -> deviceService.moveRailArmToPoint(1, 2, 3));
cmdList.add(() -> deviceService.openClaw());
// TODO 检查加液位是否被占用
cmdList.add(() -> deviceService.moveRailArmToPoint(4,5,6));
return run(cmdList);
}
// 恒温
private Boolean keepHeat(CMDForm cmdForm) {
//TODO 执行指令
return true;
List<Supplier<Boolean>> cmdList = new ArrayList<>();
// TODO 加热到指定温度,通过传感器使其恒温
return run(cmdList);
}
// 加液
private Boolean injectFluid(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
List<Supplier<Boolean>> cmdList = new ArrayList<>();
// TODO 计算出试管的坐标
// TODO 获取加液位是否有试管(传感器?)
// TODO 溶液id 容量
Map<String, Object> params = cmdForm.getParams();
cmdList.add(() -> deviceService.addLiquid((Integer) params.get("pumpId"), ((Integer)params.get("volume"))));
return run(cmdList);
}
// 放下托盘
private boolean downTray(CMDForm cmdForm) {
//TODO 执行指令
return false;
List<Supplier<Boolean>> cmdList = new ArrayList<>();
cmdList.add(() -> deviceService.moveTrayToHeight(0));
return run(cmdList);
}
// 抬起托盘
private boolean upTray(CMDForm cmdForm) {
//TODO 执行指令
List<Supplier<Boolean>> cmdList = new ArrayList<>();
cmdList.add(() -> deviceService.moveTrayToHeight(20));
return run(cmdList);
}
private boolean run(List<Supplier<Boolean>> cmdList) {
// 执行所有命令
for (Supplier<Boolean> command : cmdList) {
boolean result = command.get();
if (!result) {
return false;
}
}
return true;
}

Loading…
Cancel
Save