From 8cc234ca98d01458a96d2d3a24d35a39f08946b0 Mon Sep 17 00:00:00 2001 From: sige Date: Thu, 28 Dec 2023 10:04:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=B5=E8=82=B2=E7=9B=98=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boditech/controller/DeviceController.java | 50 ++++++++-------------- .../com/dreamworks/boditech/driver/Device.java | 1 + .../actuator/ActModuleIncubatorTemperature.java | 20 +++++++++ .../boditech/driver/actuator/ActuatorModule.java | 3 ++ .../boditech/driver/entity/IncubatorSlot.java | 5 +++ 5 files changed, 48 insertions(+), 31 deletions(-) create mode 100644 src/main/java/com/dreamworks/boditech/driver/actuator/ActModuleIncubatorTemperature.java diff --git a/src/main/java/com/dreamworks/boditech/controller/DeviceController.java b/src/main/java/com/dreamworks/boditech/controller/DeviceController.java index f744cf6..014ad52 100644 --- a/src/main/java/com/dreamworks/boditech/controller/DeviceController.java +++ b/src/main/java/com/dreamworks/boditech/controller/DeviceController.java @@ -1,11 +1,11 @@ package com.dreamworks.boditech.controller; import com.dreamworks.boditech.controller.entity.ApiResponse; +import com.dreamworks.boditech.driver.Device; +import com.dreamworks.boditech.driver.actuator.ActIncubator; +import com.dreamworks.boditech.driver.actuator.ActModuleIncubatorTemperature; import com.dreamworks.boditech.driver.actuator.ActModuleTestCardBoxCaseTemperature; import com.dreamworks.boditech.driver.actuator.ActuatorModule; -import com.dreamworks.boditech.driver.entity.ParamBufferTubeUpdateByBox; -import com.dreamworks.boditech.driver.entity.ParamLargeBufferTubeUpdate; -import com.dreamworks.boditech.driver.entity.ParamPipetteTipUpdate; -import com.dreamworks.boditech.driver.entity.ParamTestCardUpdateByBox; +import com.dreamworks.boditech.driver.entity.*; import com.dreamworks.boditech.driver.task.Task; import com.dreamworks.boditech.service.DeviceService; import jakarta.annotation.Resource; @@ -114,6 +114,21 @@ public class DeviceController extends BaseController { } @ResponseBody + @PostMapping("/api/device/incubator-status-get") + public ApiResponse incubatorStatusGet() { + Device device = this.deviceService.device; + ActIncubator incubator = (ActIncubator)device.getActuator(ActuatorModule.INCUBATOR_MOTOR); + IncubatorSlot[] slots = incubator.getSlots(); + + ActModuleIncubatorTemperature temperatureMod = (ActModuleIncubatorTemperature)device.getActuator(ActuatorModule.INCUBATOR_TEMPERATURE); + Double temperature = temperatureMod.getTemperature(); + return this.success(Map.of( + "temperature", temperature, + "slots", slots + )); + } + + @ResponseBody @PostMapping("/api/device/start") public ApiResponse start() { this.deviceService.start(); @@ -321,34 +336,7 @@ public class DeviceController extends BaseController { )); } - @ResponseBody - @PostMapping("/api/device/incubator-status-get") - public ApiResponse incubatorStatusGet() { - List> slots = new ArrayList<>(); - for ( int i=0; i<20; i++) { - Map slot = new HashMap<>(); - slot.put("index", Integer.toString(i)); - slot.put("status", "INUSE"); - slot.put("task", Map.of( - "recordUUID", "202110-01", - "samplePID", "ABCD1234", - "sampleUID", "016", - "projectName", "hsCRP", - "lotCode", "1234567890", - "tubeIndex", "05", - "tubeType", "WB", - "sampleType", "FB", - "incubateStartedAt", "2012-12-15 00:00:44", - "incubateTime", "3600" - )); - slots.add(slot); - } - return this.success(Map.of( - "temperature", 37, - "slots", slots - )); - } @ResponseBody @PostMapping("/api/device/test-tube-rack-status-get") diff --git a/src/main/java/com/dreamworks/boditech/driver/Device.java b/src/main/java/com/dreamworks/boditech/driver/Device.java index 177416c..905af7c 100644 --- a/src/main/java/com/dreamworks/boditech/driver/Device.java +++ b/src/main/java/com/dreamworks/boditech/driver/Device.java @@ -90,6 +90,7 @@ public class Device { this.appendActuator(new ActCodeScanner(ActuatorModule.ARM_Z_SCANNER, this)); this.appendActuator(new ActModuleTestCardBoxCase(ActuatorModule.TEST_CARD_BOX_CASE, this)); this.appendActuator(new ActModuleTestCardBoxCaseTemperature(ActuatorModule.TEST_CARD_BOX_CASE_TEMPERATURE, this)); + this.appendActuator(new ActModuleIncubatorTemperature(ActuatorModule.INCUBATOR_TEMPERATURE, this)); this.bufferTubes.setup(); } diff --git a/src/main/java/com/dreamworks/boditech/driver/actuator/ActModuleIncubatorTemperature.java b/src/main/java/com/dreamworks/boditech/driver/actuator/ActModuleIncubatorTemperature.java new file mode 100644 index 0000000..9f070b4 --- /dev/null +++ b/src/main/java/com/dreamworks/boditech/driver/actuator/ActModuleIncubatorTemperature.java @@ -0,0 +1,20 @@ +package com.dreamworks.boditech.driver.actuator; +import com.dreamworks.boditech.driver.Device; +public class ActModuleIncubatorTemperature extends ActuatorBase { + // register : sensor temperature 0 + public static final Integer REG_SENSOR_TEMPERATURE_0 = 200; + + // constructor + public ActModuleIncubatorTemperature(Integer mid, Device device) { + super(mid, device); + } + + // get temperature + public Double getTemperature() { + if ( !this.getDevice().enable ) { + return 99.99; + } + Integer rawTemperature = this.getRegister(ActModuleIncubatorTemperature.REG_SENSOR_TEMPERATURE_0); + return rawTemperature.doubleValue() / 100.0; + } +} diff --git a/src/main/java/com/dreamworks/boditech/driver/actuator/ActuatorModule.java b/src/main/java/com/dreamworks/boditech/driver/actuator/ActuatorModule.java index 1d15e25..a19fee7 100644 --- a/src/main/java/com/dreamworks/boditech/driver/actuator/ActuatorModule.java +++ b/src/main/java/com/dreamworks/boditech/driver/actuator/ActuatorModule.java @@ -20,7 +20,10 @@ public class ActuatorModule { public static Integer TEST_TUBE_RACK_MOVE_MOTOR = 62; public static Integer TEST_TUBE_RACK_EXIT_MOTOR = 63; public static Integer TEST_TUBE_RACK_SCANNER = 64; + public static Integer INCUBATOR_MOTOR = 71; + public static Integer INCUBATOR_TEMPERATURE = 51; + public static Integer ANALYSIS_PUSH_MOTOR = 92; public static Integer ANALYSIS_SCAN_MOTOR = 91; public static Integer ANALYSIS_SCAN_SCANNER = 93; diff --git a/src/main/java/com/dreamworks/boditech/driver/entity/IncubatorSlot.java b/src/main/java/com/dreamworks/boditech/driver/entity/IncubatorSlot.java index 8b590a5..cdc37b7 100644 --- a/src/main/java/com/dreamworks/boditech/driver/entity/IncubatorSlot.java +++ b/src/main/java/com/dreamworks/boditech/driver/entity/IncubatorSlot.java @@ -1,5 +1,7 @@ package com.dreamworks.boditech.driver.entity; import com.dreamworks.boditech.driver.actuator.ActIncubator; +import com.fasterxml.jackson.annotation.JsonIgnore; + public class IncubatorSlot { // index public Integer index = -1; @@ -19,6 +21,7 @@ public class IncubatorSlot { } // get position of enter + @JsonIgnore public Integer getEnterLocation() { Integer offset = this.incubator.getDevice().getLocationByName("incubatorSlotInOffset"); Integer distance = this.incubator.getDevice().getLocationByName("incubatorSlotDistance"); @@ -26,6 +29,7 @@ public class IncubatorSlot { } // get exit position + @JsonIgnore public Integer getExitLocation() { Integer offset = this.incubator.getDevice().getLocationByName("incubatorSlotOutOffset"); Integer distance = this.incubator.getDevice().getLocationByName("incubatorSlotDistance"); @@ -37,6 +41,7 @@ public class IncubatorSlot { } // get test position + @JsonIgnore public Integer getTestLocation() { Integer offset = this.incubator.getDevice().getLocationByName("incubatorSlotTestHoleOffset"); Integer distance = this.incubator.getDevice().getLocationByName("incubatorSlotDistance");