From 7666ab7bb394962eb7b918c76e2c402ba9dca7be Mon Sep 17 00:00:00 2001 From: sige Date: Tue, 9 Apr 2024 19:58:31 +0800 Subject: [PATCH] 1 --- app.db | Bin 294912 -> 294912 bytes .../connection/UfModbusRTUOverTCP.java | 56 +++++++++------------ .../web/api/TsApiActuatorCommand.java | 4 +- src/main/resources/application.yml | 2 +- web | 2 +- 5 files changed, 28 insertions(+), 36 deletions(-) diff --git a/app.db b/app.db index 9beb63ed45944fd04a5e1a34f46443bfd2e90602..53073ce67b044121d87ecb28e3af943fb6cecd82 100644 GIT binary patch delta 398 zcmZo@5Nc=;njp;>KT*b+F}^XOHG#1;foW?3^OFC}x*TVwva`qwaeU>`LwZ_8|fycS|p~LTNo!L znw#iqFo!alnkOe2nIt9Y8l_m8=$aTMTk0m6nkDL{rlcmPB^xChCz&VdY?tF?d8WoJ z!0tPp-GD`wh5a78?`A~>Rd%CBK3(q6P)S2UOMY>24q|MbZfMD(lAD{Kl2ls!Y-{(6 z^;4hhXn3-t`)S+Er>#p3%rf$GQZn<>S`8kMjKiEoROe+;2LI%bdb{3^3rWhI;Zcn#hnduGy{=R+X delta 81 zcmV-X0IvUlfD(X!5|A4KT#+0@0bGG#g connections = new HashMap<>(); - - // get connection - public static UfModbusRTUOverTCP getConnection(String host, Integer port) { - String key = host + ":" + port; - if ( connections.containsKey(key) ) { - return connections.get(key); - } - - UfModbusRTUOverTCP con = new UfModbusRTUOverTCP(); - con.connect(host, port); - connections.put(key, con); - return con; - } - - @Override - synchronized public String execute(UfMdbActuatorCmd command) { - return ""; - } - @Override public void connect() { - - } - - // constructor - public UfModbusRTUOverTCP() { - this.isBusy = false; - } - - // connect - public void connect( String host, Integer port ) { try { - this.socket = new Socket(host, port); + this.socket = new Socket(this.host, this.port); this.writer = new DataOutputStream(this.socket.getOutputStream()); this.reader = this.socket.getInputStream(); } catch (Exception e) { @@ -61,6 +34,25 @@ public class UfModbusRTUOverTCP extends UfConnectionBase { } } + @Override + synchronized public String execute(UfMdbActuatorCmd command) { + if ( "03".equals(command.cmdId) ) { + Integer slaveId = Integer.parseInt(command.cmdFlags); + Integer address = Integer.parseInt(command.parameters); + Integer value = this.readHoldingRegister(slaveId, address); + return value.toString(); + } else if ( "06".equals(command.cmdId) ) { + Integer slaveId = Integer.parseInt(command.cmdFlags); + String[] params = command.parameters.split(","); + Integer address = Integer.parseInt(params[0]); + Integer value = Integer.parseInt(params[1]); + this.writeHoldingRegister(slaveId, address, value); + return ""; + } else { + throw new RuntimeException("Modbus RTU over TCP: unknown command"); + } + } + // write holding register public void writeHoldingRegister( Integer slaveId, Integer address, Integer value ) { byte[] cmd = new byte[8]; diff --git a/src/main/java/com/iflytop/digester/underframework/web/api/TsApiActuatorCommand.java b/src/main/java/com/iflytop/digester/underframework/web/api/TsApiActuatorCommand.java index 8fff3fd..19e2aea 100644 --- a/src/main/java/com/iflytop/digester/underframework/web/api/TsApiActuatorCommand.java +++ b/src/main/java/com/iflytop/digester/underframework/web/api/TsApiActuatorCommand.java @@ -42,11 +42,11 @@ public class TsApiActuatorCommand extends UfApiControllerBase { @ResponseBody public UfApiResponse execute(@RequestBody UfMdbActuatorCmd actuatorCmd ) { try { - UfActuatorCmdExecutor.execute(actuatorCmd); + String result = UfActuatorCmdExecutor.execute(actuatorCmd); + return success(Map.of("result", result)); } catch ( Exception e ) { return error(e.getMessage()); } - return success(); } @PostMapping("/api/actuator-cmd/connection-list") diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 37d6fa1..01c44af 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -18,7 +18,7 @@ device: - name : modbus key : modbus type : ModbusRTUOverTCP - host: 182.168.8.10 + host: 127.0.0.1 port: 502 mqtt-broker: diff --git a/web b/web index 54eb432..b69f9ba 160000 --- a/web +++ b/web @@ -1 +1 @@ -Subproject commit 54eb4327c3a74e6aae926d4752b18439f62091f0 +Subproject commit b69f9ba8503f7247097d2eaa9dad06cc36582fec