From f487086506df2590ba6401eec55745b9fae31b3e Mon Sep 17 00:00:00 2001 From: sige Date: Tue, 6 Feb 2024 10:23:59 +0800 Subject: [PATCH] ~~ --- .../my/graphiteDigesterBg/MyApplicationRunner.java | 63 ---------------------- .../java/com/my/graphiteDigesterBg/MyDevice.java | 13 ----- .../diframe/DiApplicationRunner.java | 4 ++ .../my/graphiteDigesterBg/diframe/DiCommand.java | 1 + .../my/graphiteDigesterBg/diframe/DiDeviceIO.java | 1 + .../diframe/DiDeviceIOManager.java | 33 +++++++++--- .../diframe/api/DiApiDevice.java | 13 +++++ src/src/main/resources/device.yml | 11 ++++ 8 files changed, 57 insertions(+), 82 deletions(-) delete mode 100644 src/src/main/java/com/my/graphiteDigesterBg/MyApplicationRunner.java diff --git a/src/src/main/java/com/my/graphiteDigesterBg/MyApplicationRunner.java b/src/src/main/java/com/my/graphiteDigesterBg/MyApplicationRunner.java deleted file mode 100644 index 58d5a48..0000000 --- a/src/src/main/java/com/my/graphiteDigesterBg/MyApplicationRunner.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.my.graphiteDigesterBg; -import com.my.graphiteDigesterBg.diframe.DiDevice; -import com.my.graphiteDigesterBg.diframe.DiDeviceActuatorManager; -import com.my.graphiteDigesterBg.diframe.DiDeviceIO; -import com.my.graphiteDigesterBg.diframe.DiDeviceIOManager; -import com.my.graphiteDigesterBg.diframe.actuator.DiActMotor; -import com.my.graphiteDigesterBg.diframe.actuator.DiActPeristalticPump; -import com.my.graphiteDigesterBg.diframe.actuator.DiActServo; -import com.my.graphiteDigesterBg.diframe.util.DiClassHelper; -import jakarta.annotation.Resource; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; -@Order(1) -@Component -public class MyApplicationRunner implements ApplicationRunner { - @Resource - private DiDevice device; - - @Override - public void run(ApplicationArguments args) throws Exception { - this.device.getRegisters().setup(); - this.device.getActuators().setup(); - - this.setupIO(); - this.setupActuators(); - } - - // setup IO - private void setupIO() { - DiDeviceIOManager io = this.device.getIO(); - io.register(MyDevice.IO_HEAT_SLOT_01_HEATER_01, new DiDeviceIO(){{ - mid = 70; - index = 0; - }}); - io.register(MyDevice.IO_HEAT_SLOT_01_HEATER_02, new DiDeviceIO(){{ - mid = 70; - index = 1; - }}); - io.register(MyDevice.IO_HEAT_SLOT_01_HEATER_03, new DiDeviceIO(){{ - mid = 70; - index = 5; - }}); - io.register(MyDevice.IO_HEAT_SLOT_01_HEATER_04, new DiDeviceIO(){{ - mid = 70; - index = 6; - }}); - io.register(MyDevice.IO_AIR_COMPRESSOR, new DiDeviceIO(){{ - mid = 70; - index = 4; - }}); - } - - // setup actuators - private void setupActuators() { - DiDeviceActuatorManager actuators = this.device.getActuators(); - actuators.register(MyDevice.ACT_HEAT_SLOT_01_COVER_SERVO, new DiActServo(){{ - mid = 12; - }}); - } -} diff --git a/src/src/main/java/com/my/graphiteDigesterBg/MyDevice.java b/src/src/main/java/com/my/graphiteDigesterBg/MyDevice.java index ebdf331..db04db2 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/MyDevice.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/MyDevice.java @@ -1,9 +1,5 @@ package com.my.graphiteDigesterBg; import com.my.graphiteDigesterBg.diframe.DiDevice; - -import java.util.HashMap; -import java.util.Map; - public class MyDevice extends DiDevice { public static String ACT_HEAT_PLATE_MOTOR = "HeatingPlateMotor"; public static String ACT_LIQUID_PLATE_MOTOR = "LiquidPlateMotor"; @@ -20,18 +16,9 @@ public class MyDevice extends DiDevice { public static String ACT_HEAT_SLOT_01_COVER_SERVO = "heatSlot0CoverServo"; - - - - - - public static String ACT_LIQUID_PERISTALTIC_PUMP_0 = "liquidPeristalticPump_0"; - public static String IO_HEAT_SLOT_01_HEATER_01 = "heatSlot1Heater1"; public static String IO_HEAT_SLOT_01_HEATER_02 = "heatSlot1Heater2"; public static String IO_HEAT_SLOT_01_HEATER_03 = "heatSlot1Heater3"; public static String IO_HEAT_SLOT_01_HEATER_04 = "heatSlot1Heater4"; public static String IO_AIR_COMPRESSOR = "airCompressor"; - - public static String RES_HEATING_TUBE_RACK_SLOT = "HeatingTubeRackSlot"; } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiApplicationRunner.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiApplicationRunner.java index 2359b6d..b7096f5 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiApplicationRunner.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiApplicationRunner.java @@ -12,6 +12,10 @@ public class DiApplicationRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { + this.device.getRegisters().setup(); + this.device.getActuators().setup(); + this.device.getIO().setup(); + this.device.getTaskManager().scanTaskClasses("com.my.graphiteDigesterBg.task"); this.device.getTaskManager().scanTaskStepClasses("com.my.graphiteDigesterBg.step"); this.device.getResource().scanResourceManagerClasses("com.my.graphiteDigesterBg.resource"); diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java index b9068b6..62b6501 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommand.java @@ -4,6 +4,7 @@ public enum DiCommand { MODULE_GET_STATUS("module_get_status", 0x0104), MODULE_SET_REG("module_set_reg", 0x0105), MODULE_GET_REG("module_get_reg", 0x0106), + MODULE_READ_IO("module_readio", 0x0107), MODULE_ENABLE("module_enable", 0x0114), MOTOR_EASY_MOVE_BY("motor_easy_move_by", 0x0212), MOTOR_EASY_MOVE_TO("motor_easy_move_to", 0x0213), diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIO.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIO.java index aaac977..b5d15e2 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIO.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIO.java @@ -1,5 +1,6 @@ package com.my.graphiteDigesterBg.diframe; public class DiDeviceIO { + protected String key; protected Integer mid; protected Integer index; } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIOManager.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIOManager.java index 5304d61..8024f89 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIOManager.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceIOManager.java @@ -1,5 +1,6 @@ package com.my.graphiteDigesterBg.diframe; import java.util.HashMap; +import java.util.List; import java.util.Map; public class DiDeviceIOManager { // device instance @@ -13,13 +14,33 @@ public class DiDeviceIOManager { this.ios = new HashMap(); } - // register actuator - public void register( String id, DiDeviceIO io ) { - this.ios.put( id, io ); + // setup + public void setup() { + Object config = this.device.getConfig().get("io"); + if ( config == null ) { + return; + } + + if ( !(config instanceof List) ) { + throw new RuntimeException("Invalid io config"); + } + + List> ioList = (List>) config; + for ( Map item : ioList ) { + DiDeviceIO io = new DiDeviceIO(); + io.key = (String)item.get("key"); + io.mid = (Integer)item.get("mid"); + io.index = (Integer)item.get("index"); + this.ios.put(io.key, io); + } } - // get actuator - public void get( String id ) { - this.ios.get(id); + // get io value + public Integer getValue( String key ) { + DiDeviceIO io = this.ios.get(key); + var response = this.device.call(DiCommand.MODULE_READ_IO, io.mid); + Integer value = response.readInteger(0); + value = (value >> io.index) & 0x01; + return value; } } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/api/DiApiDevice.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/api/DiApiDevice.java index 1c499b0..c36dc3f 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/api/DiApiDevice.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/api/DiApiDevice.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.ResponseBody; import java.util.HashMap; +import java.util.List; import java.util.Map; @Controller public class DiApiDevice extends DiApiControllerBase { @@ -50,6 +51,18 @@ public class DiApiDevice extends DiApiControllerBase { return this.success(result); } + @ResponseBody + @PostMapping("/api/device/io-get-values-by-key-list") + public DiApiResponse getIOValuesByKeyList( @RequestBody Map params ) { + List keys = (List)params.get("keys"); + var io = this.device.getIO(); + Map result = new HashMap<>(); + for ( String key : keys ) { + result.put(key, io.getValue(key)); + } + return this.success(result); + } + public void pause() {} public void resume() {} } diff --git a/src/src/main/resources/device.yml b/src/src/main/resources/device.yml index ae8d8a6..8890625 100644 --- a/src/src/main/resources/device.yml +++ b/src/src/main/resources/device.yml @@ -345,6 +345,17 @@ actuators : stepMotorIHold: 0 stepMotorIRun: 4 +# device io +io : + - {key: "AcidLiquidLevelSensor0", mid: 70, index: 0} + - {key: "AcidLiquidLevelSensor1", mid: 70, index: 1} + - {key: "AcidLiquidLevelSensor2", mid: 70, index: 2} + - {key: "AcidLiquidLevelSensor3", mid: 70, index: 3} + - {key: "AcidLiquidLevelSensor4", mid: 70, index: 4} + - {key: "AcidLiquidLevelSensor5", mid: 70, index: 5} + - {key: "AcidLiquidLevelSensor6", mid: 70, index: 6} + - {key: "AcidLiquidLevelSensor7", mid: 70, index: 7} + # device registers registers : # 加热盘 Slot Cover