Browse Source

按钮盒对接 --end

k 2 years ago
parent
commit
171060bb9f

+ 92 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/test/AutoDoorTestController.java

@@ -0,0 +1,92 @@
+package com.ruoyi.web.controller.warewms.test;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.hard.modbus.tcp.AutoDoorClient;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author JWK
+ * @version 1.0
+ * @date 2022/11/14 14:52
+ */
+@Api("自动门测试")
+@RestController
+@RequestMapping("/api/door")
+public class AutoDoorTestController {
+
+
+    @Autowired
+    private AutoDoorClient autoDoorClient;
+
+    /**
+     * 开门
+     *
+     * @param con true代表靠马路的自动门 false墙里面的自动门
+     */
+    @ApiOperation("发送开门")
+    @PostMapping("/sendOpen")
+    public Boolean sendOpen(Boolean con) {
+        return autoDoorClient.sendOpen(con);
+    }
+
+    /**
+     * 关门
+     *
+     * @param con true代表靠马路的自动门 false墙里面的自动门
+     */
+    @ApiOperation("发送关门")
+    @PostMapping("/sendClose")
+    public Boolean sendClose(Boolean con) {
+        return autoDoorClient.sendClose(con);
+    }
+
+    /**
+     * 查询开门状态
+     *
+     * @param con true代表靠马路的自动门 false墙里面的自动门
+     */
+    @ApiOperation("查询开门状态")
+    @PostMapping("/readOpenSts")
+    public AjaxResult readOpenSts(Boolean con) {
+        return autoDoorClient.readOpenSts(con);
+    }
+
+    /**
+     * 查询关门门状态
+     *
+     * @param con true代表靠马路的自动门 false墙里面的自动门
+     */
+    @ApiOperation("查询关门状态")
+    @PostMapping("/readCloseSts")
+    public AjaxResult readCloseSts(Boolean con) {
+        return autoDoorClient.readCloseSts(con);
+    }
+
+    /**
+     * 开门清除标记
+     *
+     * @param con true代表靠马路的自动门 false墙里面的自动门
+     */
+    @ApiOperation("发送开门清除标记")
+    @PostMapping("/sendOpenClear")
+    public Boolean sendOpenClear(Boolean con) {
+        return autoDoorClient.sendOpenClear(con);
+    }
+
+    /**
+     * 关门清除标记
+     *
+     * @param con true代表靠马路的自动门 false墙里面的自动门
+     */
+    @ApiOperation("发送关门清除标记")
+    @PostMapping("/sendCloseClear")
+    public Boolean sendCloseClear(Boolean con) {
+        return autoDoorClient.sendCloseClear(con);
+    }
+
+}

+ 112 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/test/ButtonBoxTestController.java

@@ -0,0 +1,112 @@
+package com.ruoyi.web.controller.warewms.test;
+
+import com.ruoyi.hard.modbus.tcp.ButtonBoxClient;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author JWK
+ * @version 1.0
+ * @date 2022/11/14 14:52
+ */
+@Api("按钮盒测试")
+@RestController
+@RequestMapping("/api/btnBox")
+public class ButtonBoxTestController {
+
+    @Autowired
+    private ButtonBoxClient buttonBoxClient;
+
+    /**
+     * 读按钮盒01是否被按下
+     *
+     * @return
+     */
+    @ApiOperation("读按钮盒01是否被按下")
+    @PostMapping("/readBtn01")
+    public Boolean readBtn01() {
+        return buttonBoxClient.readBtn01();
+    }
+
+    /**
+     * 读按钮盒02是否被按下
+     *
+     * @return
+     */
+    @ApiOperation("读按钮盒02是否被按下")
+    @PostMapping("/readBtn02")
+    public Boolean readBtn02() {
+        return buttonBoxClient.readBtn02();
+    }
+
+    /**
+     * 清除钮盒01按下标记
+     *
+     * @return
+     */
+    @ApiOperation("清除钮盒01按下标记")
+    @PostMapping("/clearBtn01")
+    public Boolean clearBtn01() {
+        return buttonBoxClient.clearBtn01();
+    }
+
+    /**
+     * 清除钮盒02按下标记
+     *
+     * @return
+     */
+    @ApiOperation("清除钮盒02按下标记")
+    @PostMapping("/clearBtn02")
+    public Boolean clearBtn02() {
+        return buttonBoxClient.clearBtn02();
+    }
+
+    /**
+     * 写钮盒01灭灯
+     *
+     * @return
+     */
+    @ApiOperation("写钮盒01灭灯")
+    @PostMapping("/writeLamp01Death")
+    public Boolean writeLamp01Death() {
+        return buttonBoxClient.writeLamp01Death();
+    }
+
+    /**
+     * 写钮盒02灭灯
+     *
+     * @return
+     */
+    @ApiOperation("写钮盒02灭灯")
+    @PostMapping("/writeLamp02Death")
+    public Boolean writeLamp02Death() {
+        return buttonBoxClient.writeLamp02Death();
+    }
+
+    /**
+     * 写钮盒01亮灯
+     *
+     * @return
+     */
+    @ApiOperation("写钮盒01亮灯")
+    @PostMapping("/writeLamp01Bright")
+    public Boolean writeLamp01Bright() {
+        return buttonBoxClient.writeLamp01Bright();
+    }
+
+    /**
+     * 写钮盒02亮灯
+     *
+     * @return
+     */
+    @ApiOperation("写钮盒02亮灯")
+    @PostMapping("/writeLamp02Bright")
+    public Boolean writeLamp02Bright() {
+        return buttonBoxClient.writeLamp02Bright();
+    }
+
+}

+ 0 - 104
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/test/ModbusTestController.java

@@ -1,12 +1,6 @@
 package com.ruoyi.web.controller.warewms.test;
 
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.hard.modbus.tcp.AutoDoorClient;
-import com.ruoyi.hard.modbus.tcp.ButtonBoxClient;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -20,102 +14,4 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/api/modbus")
 public class ModbusTestController {
 
-
-    @Autowired
-    private AutoDoorClient autoDoorClient;
-    @Autowired
-    private ButtonBoxClient buttonBoxClient;
-
-    /**
-     * 写保持寄存器 开门
-     *
-     * @param con true代表靠马路的自动门 false墙里面的自动门
-     */
-    @ApiOperation("发送开门")
-    @PostMapping("/sendOpen")
-    public Boolean sendOpen(Boolean con) {
-        return autoDoorClient.sendOpen(con);
-    }
-
-    /**
-     * 写保持寄存器 关门
-     *
-     * @param con true代表靠马路的自动门 false墙里面的自动门
-     */
-    @ApiOperation("发送关门")
-    @PostMapping("/sendClose")
-    public Boolean sendClose(Boolean con) {
-        return autoDoorClient.sendClose(con);
-    }
-
-    /**
-     * 读保持寄存器 查询开门状态
-     *
-     * @param con true代表靠马路的自动门 false墙里面的自动门
-     */
-    @ApiOperation("查询开门状态")
-    @PostMapping("/readOpenSts")
-    public AjaxResult readOpenSts(Boolean con) {
-        return autoDoorClient.readOpenSts(con);
-    }
-
-    /**
-     * 读保持寄存器 查询关门门状态
-     *
-     * @param con true代表靠马路的自动门 false墙里面的自动门
-     */
-    @ApiOperation("查询关门状态")
-    @PostMapping("/readCloseSts")
-    public AjaxResult readCloseSts(Boolean con) {
-        return autoDoorClient.readCloseSts(con);
-    }
-
-    /**
-     * 写保持寄存器 开门清除标记
-     *
-     * @param con true代表靠马路的自动门 false墙里面的自动门
-     */
-    @ApiOperation("发送开门清除标记")
-    @PostMapping("/sendOpenClear")
-    public Boolean sendOpenClear(Boolean con) {
-        return autoDoorClient.sendOpenClear(con);
-    }
-
-    /**
-     * 写保持寄存器 关门清除标记
-     *
-     * @param con true代表靠马路的自动门 false墙里面的自动门
-     */
-    @ApiOperation("发送关门清除标记")
-    @PostMapping("/sendCloseClear")
-    public Boolean sendCloseClear(Boolean con) {
-        return autoDoorClient.sendCloseClear(con);
-    }
-
-    /**
-     * 读按钮盒
-     */
-    @ApiOperation("读按钮盒")
-    @PostMapping("/btnR")
-    public void btnR(int slaveId, int offset, int len) {
-        buttonBoxClient.read(slaveId, offset, len);
-    }
-
-    /**
-     * 读按钮盒Num
-     */
-    @ApiOperation("读按钮盒Num")
-    @PostMapping("/btnRNum")
-    public void btnRNum(int slaveId, int offset) {
-        buttonBoxClient.readNum(slaveId, offset);
-    }
-
-    /**
-     * 写按钮盒
-     */
-    @ApiOperation("写按钮盒")
-    @PostMapping("/btnW")
-    public Boolean btnW(int slaveId, int offset, int value) {
-        return buttonBoxClient.write(slaveId, offset, value);
-    }
 }

+ 73 - 9
warewms-hard/src/main/java/com/ruoyi/hard/modbus/tcp/ButtonBoxClient.java

@@ -1,12 +1,13 @@
 package com.ruoyi.hard.modbus.tcp;
 
 import com.jwk.spring.boot.autoconfigure.ModbusTcpMasterTemplate;
-import com.jwk.spring.boot.constant.DATA_TYPE_WRAPPER;
 import com.jwk.spring.boot.modbus4j.ModbusMasterUtil;
 import com.serotonin.modbus4j.msg.ReadResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import static com.ruoyi.hard.modbus.tcp.ButtonBoxClient.BUTTON_BOX_CODE.*;
+
 
 /**
  * 按钮盒对接
@@ -107,25 +108,88 @@ public class ButtonBoxClient {
 
 
     /**
+     * 读按钮1状态
+     *
+     * @return true 代表按钮被按下
+     */
+    public Boolean readBtn01() {
+        short i = read(BTN_STS_01.getSlaveId(), BTN_STS_01.getOffset(), BTN_STS_01.getValue());
+        return i == 1;
+    }
+
+    /**
+     * 读按钮2状态
+     *
+     * @return true 代表按钮被按下
+     */
+    public Boolean readBtn02() {
+        short i = read(BTN_STS_02.getSlaveId(), BTN_STS_02.getOffset(), BTN_STS_02.getValue());
+        return i == 1;
+    }
+
+    /**
+     * 清除按钮1状态
+     *
+     * @return true
+     */
+    public Boolean clearBtn01() {
+        return write(BTN_STS_01.getSlaveId(), BTN_STS_01.getOffset(), BTN_STS_01.getValue1());
+    }
+
+    /**
+     * 清除按钮2状态
+     *
+     * @return true
+     */
+    public Boolean clearBtn02() {
+        return write(BTN_STS_02.getSlaveId(), BTN_STS_02.getOffset(), BTN_STS_02.getValue1());
+    }
+
+    /**
+     * 写灯1亮
+     *
+     * @return true
+     */
+    public Boolean writeLamp01Bright() {
+        return write(LAMP_STS_01.getSlaveId(), LAMP_STS_01.getOffset(), LAMP_STS_01.getValue2());
+    }
+
+    /**
+     * 写灯2亮
      *
+     * @return true
      */
-    public void readBtn01() {
+    public Boolean writeLamp02Bright() {
+        return write(LAMP_STS_02.getSlaveId(), LAMP_STS_02.getOffset(), LAMP_STS_02.getValue2());
+    }
 
+    /**
+     * 写灯1灭
+     *
+     * @return true
+     */
+    public Boolean writeLamp01Death() {
+        return write(LAMP_STS_01.getSlaveId(), LAMP_STS_01.getOffset(), LAMP_STS_01.getValue1());
     }
 
-    public void read(int slaveId, int offset, int len) {
+    /**
+     * 写灯2灭
+     *
+     * @return true
+     */
+    public Boolean writeLamp02Death() {
+        return write(LAMP_STS_02.getSlaveId(), LAMP_STS_02.getOffset(), LAMP_STS_02.getValue1());
+    }
+
+    private short read(int slaveId, int offset, int len) {
         ModbusMasterUtil modbusMasterUtil = modbusTcpMasterTemplateThird.getModbusMasterUtil();
         ReadResponse readResponse = modbusMasterUtil.readHoldingRegisters(slaveId, offset, len);
         short[] shortData = readResponse.getShortData();
+        return shortData[0];
     }
 
-    public void readNum(int slaveId, int offset) {
-        ModbusMasterUtil modbusMasterUtil = modbusTcpMasterTemplateThird.getModbusMasterUtil();
-        Number number = modbusMasterUtil.readHoldingRegister(slaveId, offset, DATA_TYPE_WRAPPER.EIGHT_BYTE_INT_SIGNED);
-
-    }
 
-    public Boolean write(int slaveId, int offset, int value) {
+    private Boolean write(int slaveId, int offset, int value) {
         ModbusMasterUtil modbusMasterUtil = modbusTcpMasterTemplateThird.getModbusMasterUtil();
         return modbusMasterUtil.writeHoldingRegisters(slaveId, offset, value);
     }