Browse Source

同步代码

master
白凤吉 5 months ago
parent
commit
d281f3072e
  1. 2
      src/main/java/com/qyft/ms/app/common/command/CommandWaitControl.java
  2. 18
      src/main/java/com/qyft/ms/app/controller/FrontCmdController.java
  3. 18
      src/main/java/com/qyft/ms/app/controller/FrontCmdDebugController.java
  4. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveClose.java
  5. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveOpen.java
  6. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageClose.java
  7. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageOpen.java
  8. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlClose.java
  9. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlOpen.java
  10. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelClose.java
  11. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelOpen.java
  12. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXMove.java
  13. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXOrigin.java
  14. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXStop.java
  15. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXYZPositionGet.java
  16. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYMove.java
  17. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYOrigin.java
  18. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYStop.java
  19. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZMove.java
  20. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZOrigin.java
  21. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZStop.java
  22. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveClose.java
  23. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveOpen.java
  24. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/SyringePumpStart.java
  25. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveCloseAll.java
  26. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenNuzzlePipeline.java
  27. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenSyringePipeline.java
  28. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveClose.java
  29. 2
      src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveOpen.java
  30. 2
      src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java
  31. 2
      src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java
  32. 2
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java
  33. 2
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java
  34. 2
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java
  35. 10
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java
  36. 14
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStop.java
  37. 2
      src/main/java/com/qyft/ms/app/handler/impl/MotorXToHome.java
  38. 2
      src/main/java/com/qyft/ms/app/handler/impl/MotorYToHome.java
  39. 2
      src/main/java/com/qyft/ms/app/handler/impl/MotorZToHome.java
  40. 6
      src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java
  41. 4
      src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFillStop.java
  42. 4
      src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelineWash.java
  43. 2
      src/main/java/com/qyft/ms/app/handler/impl/SlideTrayIn.java
  44. 2
      src/main/java/com/qyft/ms/app/handler/impl/SlideTrayOut.java
  45. 10
      src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java
  46. 2
      src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWashStop.java
  47. 2
      src/main/java/com/qyft/ms/app/handler/impl/TestDemoHandler.java
  48. 164
      src/main/java/com/qyft/ms/app/service/DeviceInitService.java
  49. 147
      src/main/java/com/qyft/ms/device/core/client/TcpClient.java
  50. 4
      src/main/java/com/qyft/ms/device/core/handler/DeviceMessageHandler.java
  51. 13
      src/main/java/com/qyft/ms/device/device/DeviceInstance.java
  52. 2
      src/main/java/com/qyft/ms/device/service/DeviceTcpCMDService.java
  53. 2
      src/main/java/com/qyft/ms/device/service/DeviceTcpCMDServiceV2.java
  54. 2
      src/main/resources/application.yml

2
src/main/java/com/qyft/ms/app/common/command/CommandWaitControl.java

@ -10,7 +10,7 @@ public class CommandWaitControl {
}
}
public synchronized void commandWait() {
commandWait(3000);
commandWait(5000);
}
public synchronized void commandContinue() {
notify();

18
src/main/java/com/qyft/ms/app/controller/FrontCmdController.java

@ -2,20 +2,27 @@ package com.qyft.ms.app.controller;
import cn.hutool.json.JSONUtil;
import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance;
import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.core.registry.CommandHandlerRegistry;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.device.DeviceInstance;
import com.qyft.ms.device.model.DeviceStatusEnum;
import com.qyft.ms.device.service.DeviceTcpCMDServiceV2;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.io.IOException;
@Tag(name = "前端调用指令")
@RestController
@RequestMapping("/api/device/front")
@ -29,6 +36,17 @@ public class FrontCmdController {
@PostMapping("/control")
public ResponseBodyEmitter controlMethod(@RequestBody CMDFormV2 cmdForm) {
ResponseBodyEmitter emitter = new ResponseBodyEmitter(3600000L);
if (DeviceInstance.getInstance().getDeviceStatus() == DeviceStatusEnum.UNKNOWN) {
//设备未归零
try {
String frontCmdId = cmdForm.getCmdId();
String frontCmdName = cmdForm.getCmdName();
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "后台已收到指令,但设备未归零完毕不执行."), MediaType.APPLICATION_JSON);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
String frontCmdName = cmdForm.getCmdName(); // 获取前端传入的命令字符串
CommandHandler handler = registry.getHandler(frontCmdName);

18
src/main/java/com/qyft/ms/app/controller/FrontCmdDebugController.java

@ -2,20 +2,27 @@ package com.qyft.ms.app.controller;
import cn.hutool.json.JSONUtil;
import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance;
import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.core.registry.CommandHandlerRegistry;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.device.DeviceInstance;
import com.qyft.ms.device.model.DeviceStatusEnum;
import com.qyft.ms.device.service.DeviceTcpCMDServiceV2;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.io.IOException;
@Tag(name = "前端调用指令")
@RestController
@RequestMapping("/api/device/debug/front")
@ -29,6 +36,17 @@ public class FrontCmdDebugController {
@PostMapping("/control")
public ResponseBodyEmitter controlMethod(@RequestBody CMDFormV2 cmdForm) {
ResponseBodyEmitter emitter = new ResponseBodyEmitter();
if (DeviceInstance.getInstance().getDeviceStatus() == DeviceStatusEnum.UNKNOWN) {
//设备未归零
try {
String frontCmdId = cmdForm.getCmdId();
String frontCmdName = cmdForm.getCmdName();
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "后台已收到指令,但设备未归零完毕不执行."), MediaType.APPLICATION_JSON);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
String frontCmdName = cmdForm.getCmdName(); // 获取前端传入的命令字符串
CommandHandler handler = registry.getHandler(frontCmdName);

2
src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveClose.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveOpen.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageClose.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageOpen.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlClose.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlOpen.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelClose.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelOpen.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXMove.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXOrigin.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXStop.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXYZPositionGet.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYMove.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYOrigin.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYStop.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZMove.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZOrigin.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZStop.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveClose.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveOpen.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/SyringePumpStart.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveCloseAll.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenNuzzlePipeline.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenSyringePipeline.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveClose.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveOpen.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;

2
src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;

2
src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java

@ -11,7 +11,7 @@ import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.handler.MatrixSprayState;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java

@ -11,7 +11,7 @@ import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.handler.MatrixSprayState;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

10
src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java

@ -12,8 +12,8 @@ import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.handler.MatrixSprayState;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.handler.DeviceMessageHandler;
import com.qyft.ms.device.core.client.TcpClient;
import com.qyft.ms.device.core.handler.DeviceMessageHandler;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
@ -707,7 +707,7 @@ public class MatrixSprayStart implements CommandHandler {
}
private boolean originZ(ResponseBodyEmitter emitter, String frontCmdId, String frontCmdName) throws IOException {
CMDToDevice motorZOriginCMDToDevice = DeviceCommandGenerator.motor_z_origin(); // 生成 z轴回原点指令
CMDToDevice motorZOriginCMDToDevice = DeviceCommandGenerator.motor_z_position_set(0.0); // 生成 z轴回原点指令
CommandFuture motorZOriginCMDToDeviceFuture = new CommandFuture();
motorZOriginCMDToDeviceFuture.setCmdToDevice(motorZOriginCMDToDevice);
Integer motorZOriginCmdId = motorZOriginCMDToDevice.getCmdId();
@ -747,7 +747,7 @@ public class MatrixSprayStart implements CommandHandler {
}
private boolean originX(ResponseBodyEmitter emitter, String frontCmdId, String frontCmdName) throws IOException {
CMDToDevice motorXOriginCMDToDevice = DeviceCommandGenerator.motor_x_origin(); //x轴回原点指令
CMDToDevice motorXOriginCMDToDevice = DeviceCommandGenerator.motor_x_position_set(0.0); //x轴回原点指令
CommandFuture motorXOriginCMDToDeviceFuture = new CommandFuture();
motorXOriginCMDToDeviceFuture.setCmdToDevice(motorXOriginCMDToDevice);
Integer motorXOriginCmdId = motorXOriginCMDToDevice.getCmdId();
@ -784,7 +784,7 @@ public class MatrixSprayStart implements CommandHandler {
}
private boolean originY(ResponseBodyEmitter emitter, String frontCmdId, String frontCmdName) throws IOException {
CMDToDevice motorYOriginCMDToDevice = DeviceCommandGenerator.motor_y_origin(); //y轴回原点指令
CMDToDevice motorYOriginCMDToDevice = DeviceCommandGenerator.motor_y_position_set(0.0); //y轴回原点指令
CommandFuture motorYOriginCMDToDeviceFuture = new CommandFuture();
motorYOriginCMDToDeviceFuture.setCmdToDevice(motorYOriginCMDToDevice);
Integer motorYOriginCmdId = motorYOriginCMDToDevice.getCmdId();

14
src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStop.java

@ -11,8 +11,8 @@ import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.handler.MatrixSprayState;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.handler.DeviceMessageHandler;
import com.qyft.ms.device.core.client.TcpClient;
import com.qyft.ms.device.core.handler.DeviceMessageHandler;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
@ -223,7 +223,7 @@ public class MatrixSprayStop implements CommandHandler {
deviceMessageHandler.setLatch(latch);
// z轴回原点
if (originZ(emitter, frontCmdId, frontCmdName)) return;
boolean finished = latch.await(5, TimeUnit.SECONDS);
boolean finished = latch.await(10, TimeUnit.SECONDS);
if (!finished) {
throw new TimeoutException("等待指令执行完成超时");
}
@ -234,7 +234,7 @@ public class MatrixSprayStop implements CommandHandler {
// y轴回原点
if (originY(emitter, frontCmdId, frontCmdName)) return;
finished = latch.await(5, TimeUnit.SECONDS);
finished = latch.await(10, TimeUnit.SECONDS);
if (!finished) {
throw new TimeoutException("等待指令执行完成超时");
}
@ -250,7 +250,7 @@ public class MatrixSprayStop implements CommandHandler {
private boolean originZ(ResponseBodyEmitter emitter, String frontCmdId, String frontCmdName) throws IOException {
CMDToDevice motorZOriginCMDToDevice = DeviceCommandGenerator.motor_z_origin(); // 生成 z轴回原点指令
CMDToDevice motorZOriginCMDToDevice = DeviceCommandGenerator.motor_z_position_set(0.0); // 生成 z轴回原点指令
CommandFuture motorZOriginCMDToDeviceFuture = new CommandFuture();
motorZOriginCMDToDeviceFuture.setCmdToDevice(motorZOriginCMDToDevice);
Integer motorZOriginCmdId = motorZOriginCMDToDevice.getCmdId();
@ -290,7 +290,7 @@ public class MatrixSprayStop implements CommandHandler {
}
private boolean originX(ResponseBodyEmitter emitter, String frontCmdId, String frontCmdName) throws IOException {
CMDToDevice motorXOriginCMDToDevice = DeviceCommandGenerator.motor_x_origin(); //x轴回原点指令
CMDToDevice motorXOriginCMDToDevice = DeviceCommandGenerator.motor_x_position_set(0.0); //x轴回原点指令
CommandFuture motorXOriginCMDToDeviceFuture = new CommandFuture();
motorXOriginCMDToDeviceFuture.setCmdToDevice(motorXOriginCMDToDevice);
Integer motorXOriginCmdId = motorXOriginCMDToDevice.getCmdId();
@ -327,7 +327,7 @@ public class MatrixSprayStop implements CommandHandler {
}
private boolean originY(ResponseBodyEmitter emitter, String frontCmdId, String frontCmdName) throws IOException {
CMDToDevice motorYOriginCMDToDevice = DeviceCommandGenerator.motor_y_origin(); //y轴回原点指令
CMDToDevice motorYOriginCMDToDevice = DeviceCommandGenerator.motor_y_position_set(0.0); //y轴回原点指令
CommandFuture motorYOriginCMDToDeviceFuture = new CommandFuture();
motorYOriginCMDToDeviceFuture.setCmdToDevice(motorYOriginCMDToDevice);
Integer motorYOriginCmdId = motorYOriginCMDToDevice.getCmdId();

2
src/main/java/com/qyft/ms/app/handler/impl/MotorXToHome.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/impl/MotorYToHome.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

2
src/main/java/com/qyft/ms/app/handler/impl/MotorZToHome.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

6
src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java

@ -10,8 +10,8 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.handler.DeviceMessageHandler;
import com.qyft.ms.device.core.client.TcpClient;
import com.qyft.ms.device.core.handler.DeviceMessageHandler;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
@ -240,7 +240,7 @@ public class NozzlePipelinePreFill implements CommandHandler {
}
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "移动z轴到指定位指令反馈", motorZPositionSetDownCmdToDeviceResult), MediaType.APPLICATION_JSON);
finished = latch.await(5, TimeUnit.SECONDS);
finished = latch.await(10, TimeUnit.SECONDS);
if (!finished) {
throw new TimeoutException("等待指令执行完成超时");
}

4
src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFillStop.java

@ -10,15 +10,13 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.util.Map;
/**
* 喷嘴管路_停止基质预充
*/

4
src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelineWash.java

@ -10,15 +10,13 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.util.Map;
/**
* 喷嘴管路_清洗喷嘴管路
*/

2
src/main/java/com/qyft/ms/app/handler/impl/SlideTrayIn.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;

2
src/main/java/com/qyft/ms/app/handler/impl/SlideTrayOut.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;

10
src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java

@ -10,8 +10,8 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.handler.DeviceMessageHandler;
import com.qyft.ms.device.core.client.TcpClient;
import com.qyft.ms.device.core.handler.DeviceMessageHandler;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
@ -129,7 +129,7 @@ public class SyringePipelineWash implements CommandHandler {
}
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "移动z轴到指定位指令反馈", motorZPositionSetCmdToDeviceResult), MediaType.APPLICATION_JSON);
boolean finished = latch.await(5, TimeUnit.SECONDS);
boolean finished = latch.await(10, TimeUnit.SECONDS);
if (!finished) {
throw new TimeoutException("等待指令执行完成超时");
}
@ -201,7 +201,7 @@ public class SyringePipelineWash implements CommandHandler {
}
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "移动y轴到指定位置指令反馈", motorYPositionSetCMDToDeviceResult), MediaType.APPLICATION_JSON);
boolean finished = latch.await(5, TimeUnit.SECONDS);
boolean finished = latch.await(10, TimeUnit.SECONDS);
if (!finished) {
throw new TimeoutException("等待指令执行完成超时");
}
@ -241,7 +241,7 @@ public class SyringePipelineWash implements CommandHandler {
}
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "移动z轴到指定位指令反馈", motorZPositionSetDownCmdToDeviceResult), MediaType.APPLICATION_JSON);
finished = latch.await(5, TimeUnit.SECONDS);
finished = latch.await(10, TimeUnit.SECONDS);
if (!finished) {
throw new TimeoutException("等待指令执行完成超时");
}

2
src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWashStop.java

@ -10,7 +10,7 @@ import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;

2
src/main/java/com/qyft/ms/app/handler/impl/TestDemoHandler.java

@ -5,7 +5,7 @@ import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;

164
src/main/java/com/qyft/ms/app/service/DeviceInitService.java

@ -0,0 +1,164 @@
//package com.qyft.ms.app.service;
//
//import cn.hutool.json.JSONObject;
//import com.qyft.ms.app.common.command.CommandFuture;
//import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance;
//import com.qyft.ms.app.common.command.DeviceCommandGenerator;
//import com.qyft.ms.app.model.bo.CMDToDevice;
//import com.qyft.ms.device.core.client.TcpClient;
//import com.qyft.ms.device.device.DeviceInstance;
//import com.qyft.ms.device.core.handler.DeviceMessageHandler;
//import com.qyft.ms.device.model.DeviceStatusEnum;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Service;
//
//import java.util.concurrent.CountDownLatch;
//import java.util.concurrent.TimeUnit;
//
///**
// * 设备初始化服务
// */
//@Slf4j
//@RequiredArgsConstructor
//@Service
//public class DeviceInitService {
// /**
// * 设备通信client
// */
// private final TcpClient deviceClient;
//
// private final DeviceMessageHandler deviceMessageHandler;
//
// public void init() {
// log.info("开始初始化设备");
// try {
// CountDownLatch latch = new CountDownLatch(1);
// deviceMessageHandler.setLatch(latch);
// originZ();
// boolean finished = latch.await(10, TimeUnit.SECONDS);
// if (!finished) {
// log.info("(初始化)等待指令执行完成超时");
// return;
// }
// latch = new CountDownLatch(2);
// deviceMessageHandler.setLatch(latch);
// originX();
// originZ();
// finished = latch.await(10, TimeUnit.SECONDS);
// if (!finished) {
// log.info("(初始化)等待指令执行完成超时");
// return;
// }
// } catch (Exception e) {
// log.error("设备初始化异常", e);
// } finally {
// DeviceInstance.getInstance().setDeviceStatus(DeviceStatusEnum.FREE);
// }
// log.info("初始化设备完成");
// }
//
// private void originZ() {
// CMDToDevice motorZOriginCMDToDevice = DeviceCommandGenerator.motor_z_origin(); // 生成 z轴回原点指令
// CommandFuture motorZOriginCMDToDeviceFuture = new CommandFuture();
// motorZOriginCMDToDeviceFuture.setCmdToDevice(motorZOriginCMDToDevice);
// Integer motorZOriginCmdId = motorZOriginCMDToDevice.getCmdId();
// CurrentSendCmdMapInstance.getInstance().putCommand(motorZOriginCmdId, motorZOriginCMDToDeviceFuture); // 将指令放入map
//
// deviceClient.sendToJSON(motorZOriginCMDToDevice); // 发送指令给设备
// log.info("(初始化)已向设备发送了z轴回原点指令:{}", motorZOriginCMDToDevice);
//
// motorZOriginCMDToDeviceFuture.waitForContinue(); // 等待设备反馈
// JSONObject motorZOriginResult = motorZOriginCMDToDeviceFuture.getCallbackResult(); // 获取设备返回结果
// CurrentSendCmdMapInstance.getInstance().removeCommand(motorZOriginCmdId); // 从map中删除该指令
//
// if (!motorZOriginCMDToDeviceFuture.isReceived()) {
// log.info("(初始化)z轴回原点指令响应超时:{}", motorZOriginResult);
// throw new RuntimeException();
// }
//
// if (motorZOriginResult.getJSONObject("error") != null) {
// log.info("(初始化)z轴回原点指令返回错误:{}", motorZOriginResult);
// throw new RuntimeException();
// }
//
// Object motorZOriginStatus = motorZOriginResult.getObj("result");
// if (motorZOriginStatus instanceof Boolean) {
// if (!(Boolean) motorZOriginStatus) {
// log.info("(初始化)z轴回原点指令执行失败:{}", motorZOriginResult);
// throw new RuntimeException();
// }
// }
// log.info("(初始化)z轴已回到原点:{}", motorZOriginResult);
// }
//
// private void originX() {
// CMDToDevice motorXOriginCMDToDevice = DeviceCommandGenerator.motor_x_origin(); // 生成 x轴回原点指令
// CommandFuture motorXOriginCMDToDeviceFuture = new CommandFuture();
// motorXOriginCMDToDeviceFuture.setCmdToDevice(motorXOriginCMDToDevice);
// Integer motorXOriginCmdId = motorXOriginCMDToDevice.getCmdId();
// CurrentSendCmdMapInstance.getInstance().putCommand(motorXOriginCmdId, motorXOriginCMDToDeviceFuture); // 将指令放入map
//
// deviceClient.sendToJSON(motorXOriginCMDToDevice); // 发送指令给设备
// log.info("(初始化)已向设备发送了x轴回原点指令:{}", motorXOriginCMDToDevice);
//
// motorXOriginCMDToDeviceFuture.waitForContinue(); // 等待设备反馈
// JSONObject motorXOriginResult = motorXOriginCMDToDeviceFuture.getCallbackResult(); // 获取设备返回结果
// CurrentSendCmdMapInstance.getInstance().removeCommand(motorXOriginCmdId); // 从map中删除该指令
//
// if (!motorXOriginCMDToDeviceFuture.isReceived()) {
// log.info("(初始化)x轴回原点指令响应超时:{}", motorXOriginResult);
// throw new RuntimeException();
// }
//
// if (motorXOriginResult.getJSONObject("error") != null) {
// log.info("(初始化)x轴回原点指令返回错误:{}", motorXOriginResult);
// throw new RuntimeException();
// }
//
// Object motorXOriginStatus = motorXOriginResult.getObj("result");
// if (motorXOriginStatus instanceof Boolean) {
// if (!(Boolean) motorXOriginStatus) {
// log.info("(初始化)x轴回原点指令执行失败:{}", motorXOriginResult);
// throw new RuntimeException();
// }
// }
// log.info("(初始化)x轴已回到原点:{}", motorXOriginResult);
// }
//
// private void originY() {
// CMDToDevice motorYOriginCMDToDevice = DeviceCommandGenerator.motor_y_origin(); // 生成 y轴回原点指令
// CommandFuture motorYOriginCMDToDeviceFuture = new CommandFuture();
// motorYOriginCMDToDeviceFuture.setCmdToDevice(motorYOriginCMDToDevice);
// Integer motorYOriginCmdId = motorYOriginCMDToDevice.getCmdId();
// CurrentSendCmdMapInstance.getInstance().putCommand(motorYOriginCmdId, motorYOriginCMDToDeviceFuture); // 将指令放入map
//
// deviceClient.sendToJSON(motorYOriginCMDToDevice); // 发送指令给设备
// log.info("(初始化)已向设备发送了y轴回原点指令:{}", motorYOriginCMDToDevice);
//
// motorYOriginCMDToDeviceFuture.waitForContinue(); // 等待设备反馈
// JSONObject motorYOriginResult = motorYOriginCMDToDeviceFuture.getCallbackResult(); // 获取设备返回结果
// CurrentSendCmdMapInstance.getInstance().removeCommand(motorYOriginCmdId); // 从map中删除该指令
//
// if (!motorYOriginCMDToDeviceFuture.isReceived()) {
// log.info("(初始化)y轴回原点指令响应超时:{}", motorYOriginResult);
// throw new RuntimeException();
// }
//
// if (motorYOriginResult.getJSONObject("error") != null) {
// log.info("(初始化)y轴回原点指令返回错误:{}", motorYOriginResult);
// throw new RuntimeException();
// }
//
// Object motorYOriginStatus = motorYOriginResult.getObj("result");
// if (motorYOriginStatus instanceof Boolean) {
// if (!(Boolean) motorYOriginStatus) {
// log.info("(初始化)y轴回原点指令执行失败:{}", motorYOriginResult);
// throw new RuntimeException();
// }
// }
// log.info("(初始化)y轴已回到原点:{}", motorYOriginResult);
// }
//
//
//}

147
src/main/java/com/qyft/ms/device/client/TcpClient.java → src/main/java/com/qyft/ms/device/core/client/TcpClient.java

@ -1,9 +1,16 @@
package com.qyft.ms.device.client;
package com.qyft.ms.device.core.client;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.qyft.ms.app.common.command.CommandFuture;
import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance;
import com.qyft.ms.app.common.command.DeviceCommandGenerator;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.device.common.jsonrpc.JsonRpcRequest;
import com.qyft.ms.device.config.TcpConfig;
import com.qyft.ms.device.handler.DeviceMessageHandler;
import com.qyft.ms.device.core.handler.DeviceMessageHandler;
import com.qyft.ms.device.device.DeviceInstance;
import com.qyft.ms.device.model.DeviceStatusEnum;
import com.qyft.ms.device.model.bo.DeviceFeedback;
import io.netty.bootstrap.Bootstrap;
import io.netty.buffer.Unpooled;
@ -23,6 +30,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@Slf4j
@ -31,7 +39,6 @@ import java.util.concurrent.TimeUnit;
public class TcpClient {
private final TcpConfig tcpConfig;
private final DeviceMessageHandler deviceMessageHandler;
private final EventLoopGroup group = new NioEventLoopGroup();
@ -78,6 +85,7 @@ public class TcpClient {
// 连接成功记录日志并设置channel
channel = f.channel();
log.info("已链接到TCP服务");
new Thread(this::initDevice).start();
} else {
// 连接失败记录日志并安排重试
log.error("无法连接到TCP服务. {}ms后重试...", tcpConfig.getReconnect());
@ -196,4 +204,137 @@ public class TcpClient {
ctx.close();
}
}
public void initDevice() {
log.info("开始初始化设备");
try {
CountDownLatch latch = new CountDownLatch(1);
deviceMessageHandler.setLatch(latch);
originZ();
boolean finished = latch.await(10, TimeUnit.SECONDS);
if (!finished) {
log.info("(初始化)等待指令执行完成超时");
return;
}
latch = new CountDownLatch(2);
deviceMessageHandler.setLatch(latch);
originX();
originZ();
finished = latch.await(10, TimeUnit.SECONDS);
if (!finished) {
log.info("(初始化)等待指令执行完成超时");
return;
}
} catch (Exception e) {
log.error("设备初始化异常", e);
} finally {
DeviceInstance.getInstance().setDeviceStatus(DeviceStatusEnum.FREE);
}
log.info("初始化设备完成");
}
private void originZ() {
CMDToDevice motorZOriginCMDToDevice = DeviceCommandGenerator.motor_z_origin(); // 生成 z轴回原点指令
CommandFuture motorZOriginCMDToDeviceFuture = new CommandFuture();
motorZOriginCMDToDeviceFuture.setCmdToDevice(motorZOriginCMDToDevice);
Integer motorZOriginCmdId = motorZOriginCMDToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(motorZOriginCmdId, motorZOriginCMDToDeviceFuture); // 将指令放入map
sendToJSON(motorZOriginCMDToDevice); // 发送指令给设备
log.info("(初始化)已向设备发送了z轴回原点指令:{}", motorZOriginCMDToDevice);
motorZOriginCMDToDeviceFuture.waitForContinue(); // 等待设备反馈
JSONObject motorZOriginResult = motorZOriginCMDToDeviceFuture.getCallbackResult(); // 获取设备返回结果
CurrentSendCmdMapInstance.getInstance().removeCommand(motorZOriginCmdId); // 从map中删除该指令
if (!motorZOriginCMDToDeviceFuture.isReceived()) {
log.info("(初始化)z轴回原点指令响应超时:{}", motorZOriginResult);
throw new RuntimeException();
}
if (motorZOriginResult.getJSONObject("error") != null) {
log.info("(初始化)z轴回原点指令返回错误:{}", motorZOriginResult);
throw new RuntimeException();
}
Object motorZOriginStatus = motorZOriginResult.getObj("result");
if (motorZOriginStatus instanceof Boolean) {
if (!(Boolean) motorZOriginStatus) {
log.info("(初始化)z轴回原点指令执行失败:{}", motorZOriginResult);
throw new RuntimeException();
}
}
log.info("(初始化)z轴已回到原点:{}", motorZOriginResult);
}
private void originX() {
CMDToDevice motorXOriginCMDToDevice = DeviceCommandGenerator.motor_x_origin(); // 生成 x轴回原点指令
CommandFuture motorXOriginCMDToDeviceFuture = new CommandFuture();
motorXOriginCMDToDeviceFuture.setCmdToDevice(motorXOriginCMDToDevice);
Integer motorXOriginCmdId = motorXOriginCMDToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(motorXOriginCmdId, motorXOriginCMDToDeviceFuture); // 将指令放入map
sendToJSON(motorXOriginCMDToDevice); // 发送指令给设备
log.info("(初始化)已向设备发送了x轴回原点指令:{}", motorXOriginCMDToDevice);
motorXOriginCMDToDeviceFuture.waitForContinue(); // 等待设备反馈
JSONObject motorXOriginResult = motorXOriginCMDToDeviceFuture.getCallbackResult(); // 获取设备返回结果
CurrentSendCmdMapInstance.getInstance().removeCommand(motorXOriginCmdId); // 从map中删除该指令
if (!motorXOriginCMDToDeviceFuture.isReceived()) {
log.info("(初始化)x轴回原点指令响应超时:{}", motorXOriginResult);
throw new RuntimeException();
}
if (motorXOriginResult.getJSONObject("error") != null) {
log.info("(初始化)x轴回原点指令返回错误:{}", motorXOriginResult);
throw new RuntimeException();
}
Object motorXOriginStatus = motorXOriginResult.getObj("result");
if (motorXOriginStatus instanceof Boolean) {
if (!(Boolean) motorXOriginStatus) {
log.info("(初始化)x轴回原点指令执行失败:{}", motorXOriginResult);
throw new RuntimeException();
}
}
log.info("(初始化)x轴已回到原点:{}", motorXOriginResult);
}
private void originY() {
CMDToDevice motorYOriginCMDToDevice = DeviceCommandGenerator.motor_y_origin(); // 生成 y轴回原点指令
CommandFuture motorYOriginCMDToDeviceFuture = new CommandFuture();
motorYOriginCMDToDeviceFuture.setCmdToDevice(motorYOriginCMDToDevice);
Integer motorYOriginCmdId = motorYOriginCMDToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(motorYOriginCmdId, motorYOriginCMDToDeviceFuture); // 将指令放入map
sendToJSON(motorYOriginCMDToDevice); // 发送指令给设备
log.info("(初始化)已向设备发送了y轴回原点指令:{}", motorYOriginCMDToDevice);
motorYOriginCMDToDeviceFuture.waitForContinue(); // 等待设备反馈
JSONObject motorYOriginResult = motorYOriginCMDToDeviceFuture.getCallbackResult(); // 获取设备返回结果
CurrentSendCmdMapInstance.getInstance().removeCommand(motorYOriginCmdId); // 从map中删除该指令
if (!motorYOriginCMDToDeviceFuture.isReceived()) {
log.info("(初始化)y轴回原点指令响应超时:{}", motorYOriginResult);
throw new RuntimeException();
}
if (motorYOriginResult.getJSONObject("error") != null) {
log.info("(初始化)y轴回原点指令返回错误:{}", motorYOriginResult);
throw new RuntimeException();
}
Object motorYOriginStatus = motorYOriginResult.getObj("result");
if (motorYOriginStatus instanceof Boolean) {
if (!(Boolean) motorYOriginStatus) {
log.info("(初始化)y轴回原点指令执行失败:{}", motorYOriginResult);
throw new RuntimeException();
}
}
log.info("(初始化)y轴已回到原点:{}", motorYOriginResult);
}
}

4
src/main/java/com/qyft/ms/device/handler/DeviceMessageHandler.java → src/main/java/com/qyft/ms/device/core/handler/DeviceMessageHandler.java

@ -1,4 +1,4 @@
package com.qyft.ms.device.handler;
package com.qyft.ms.device.core.handler;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
@ -13,13 +13,11 @@ import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.CharsetUtil;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;

13
src/main/java/com/qyft/ms/device/device/DeviceInstance.java

@ -33,7 +33,7 @@ public class DeviceInstance {
//嵌入式版本
private String microVersion;
//设备状态
private DeviceStatusEnum deviceStatus;
private DeviceStatusEnum deviceStatus = DeviceStatusEnum.UNKNOWN;
//喷涂状态
private MatrixSprayStatusEnum matrixSprayStatusEnum;
@ -46,7 +46,7 @@ public class DeviceInstance {
private MotorZ motorZ;
private ConcurrentHashMap<Integer, Long> receivedCommands = new ConcurrentHashMap<>();
private ConcurrentHashMap<Integer, Long> receivedCommands = new ConcurrentHashMap<>();
private void updateMotorPosition(MotorNameEnum motorName, Double position) {
@ -58,7 +58,10 @@ public class DeviceInstance {
motorZ.setPosition(position);
}
};
}
;
private void updateMotorOrigin(MotorNameEnum motorName, Boolean isOrigin) {
if (motorName == MotorNameEnum.X) {
motorX.setIsOrigin(isOrigin);
@ -67,5 +70,7 @@ public class DeviceInstance {
} else if (motorName == MotorNameEnum.Z) {
motorZ.setIsOrigin(isOrigin);
}
};
}
;
}

2
src/main/java/com/qyft/ms/device/service/DeviceTcpCMDService.java

@ -1,7 +1,7 @@
package com.qyft.ms.device.service;
import cn.hutool.json.JSONUtil;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import com.qyft.ms.device.common.constant.DeviceCommands;
import com.qyft.ms.device.common.jsonrpc.JsonRpcRequest;
import com.qyft.ms.device.model.bo.DeviceFeedback;

2
src/main/java/com/qyft/ms/device/service/DeviceTcpCMDServiceV2.java

@ -1,7 +1,7 @@
package com.qyft.ms.device.service;
import cn.hutool.json.JSONUtil;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.core.client.TcpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

2
src/main/resources/application.yml

@ -16,7 +16,7 @@ spring:
mybatis-plus:
configuration:
# 开启 SQL 日志输出(可选)
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 如果需要加载 XML 文件(自定义 SQL),可配置 mapper-locations:
mapper-locations: classpath*:mapper/*.xml

Loading…
Cancel
Save