Ver código fonte

补充输送线类

LZH 1 ano atrás
pai
commit
00da4c941d

+ 182 - 0
warewms-hard/src/main/java/com/ruoyi/hard/xuankang/BeltLineClient.java

@@ -0,0 +1,182 @@
+package com.ruoyi.hard.xuankang;
+
+import com.jwk.spring.boot.autoconfigure.ModbusTcpMasterTemplate;
+import com.jwk.spring.boot.constant.DATA_TYPE_WRAPPER;
+import com.jwk.spring.boot.modbus4j.ModbusMasterUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
+import static com.ruoyi.hard.xuankang.BeltLineClient.CONVEYOR_LINE_COMMAND.*;
+
+
+/**
+ * @author Jwk
+ * @version 1.0
+ * @date 2023/5/6 9:41
+ */
+@Slf4j
+@Service
+public class BeltLineClient {
+
+    /**
+     * 输送线
+     */
+    @Autowired(required = false)
+    @Qualifier("modbusTcpMasterTemplateThird")
+    private ModbusTcpMasterTemplate modbusTcpMasterTemplateThird;
+
+    /**
+     * 输送线命令
+     */
+    public enum CONVEYOR_LINE_COMMAND {
+        //读心跳
+        READ_THE_HEART(1, 0, 1, 0),
+        //读模式
+        READ_THE_MODE(1, 1, 1, 0),
+        //读状态
+        READ_THE_STATE(1, 2, 1, 0),
+        //写心跳
+        WRITE_THE_HEART(1, 9, 1, 0),
+        //写模式
+        WRITE_THE_MODE(1, 10, 1, 0),
+        //写状态
+        WRITE_THE_STATE(1, 11, 1, 0),
+        //写通过方向
+        WRITE_THE_DIRECTION(1, 12, 1, 0);
+
+
+        /**
+         * 从节点id
+         */
+        private int slaveId;
+        /**
+         * 地址
+         */
+        private int offset;
+        /**
+         * 读的长度
+         */
+        private int value;
+        /**
+         * 写的值
+         */
+        private int value1;
+
+        CONVEYOR_LINE_COMMAND(int slaveId, int offset, int value, int value1) {
+            this.slaveId = slaveId;
+            this.offset = offset;
+            this.value = value;
+            this.value1 = value1;
+        }
+
+        public int getSlaveId() {
+            return slaveId;
+        }
+
+        public int getOffset() {
+            return offset;
+        }
+
+        public int getValue() {
+            return value;
+        }
+
+        public int getValue1() {
+            return value1;
+        }
+
+    }
+
+    /**
+     * 读心跳
+     *
+     * @return
+     */
+    public Number ReadHeartbeat() {
+        Number number = read1( READ_THE_HEART.getSlaveId(),READ_THE_HEART.getOffset());
+        return number;
+    }
+
+    /**
+     * 读模式
+     *
+     * @return
+     */
+    public Number readMode() {
+        Number number = read1(READ_THE_MODE.getSlaveId(), READ_THE_MODE.getOffset());
+        return number;
+    }
+
+    /**
+     * 读状态
+     *
+     * @return
+     */
+    public Number readState() {
+        Number number = read1(READ_THE_STATE.getSlaveId(), READ_THE_STATE.getOffset());
+        return number;
+    }
+
+    /**
+     * 写通讯心跳
+     *
+     * @return
+     */
+    public Boolean writeHeartbeat(int i) {
+        return write(WRITE_THE_HEART.getSlaveId(), WRITE_THE_HEART.getOffset(), i);
+    }
+
+    /**
+     * 写模式
+     *
+     * @return
+     */
+    public Boolean writeMode(int i) {
+        return write(WRITE_THE_MODE.getSlaveId(), WRITE_THE_MODE.getOffset(), i);
+    }
+
+    /**
+     * 写状态
+     *
+     * @return
+     */
+    public Boolean writeState(int i) {
+        return write(WRITE_THE_STATE.getSlaveId(), WRITE_THE_STATE.getOffset(), i);
+    }
+
+    /**
+     * 写通过方向
+     *
+     * @return
+     */
+    public Boolean writeDirection(int i) {
+        return write(WRITE_THE_DIRECTION.getSlaveId(), WRITE_THE_DIRECTION.getOffset(), i);
+    }
+
+    /**
+     * 读的方法
+     *
+     * @param slaveId
+     * @param offset
+     * @return
+     */
+    private Number read1(int slaveId, int offset) {
+        ModbusMasterUtil modbusMasterUtil = modbusTcpMasterTemplateThird.getModbusMasterUtil();
+        Number number = modbusMasterUtil.readHoldingRegister(slaveId, offset, DATA_TYPE_WRAPPER.TWO_BYTE_INT_UNSIGNED);
+        return number;
+    }
+
+    /**
+     * 写的方法
+     *
+     * @param slaveId
+     * @param offset
+     * @param value
+     * @return
+     */
+    private Boolean write(int slaveId, int offset, int value) {
+        ModbusMasterUtil modbusMasterUtil = modbusTcpMasterTemplateThird.getModbusMasterUtil();
+        return modbusMasterUtil.writeHoldingRegisters(slaveId, offset, value);
+    }
+}