|
@@ -8,6 +8,10 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.annotation.PostConstruct;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
import static com.ruoyi.hard.modbus.tcp.AutoDoorClient.AUTOMATIC_DOOR_CODE.*;
|
|
|
|
|
|
|
|
@@ -28,6 +32,13 @@ public class AutoDoorClient {
|
|
|
@Qualifier("modbusTcpMasterTemplateFirst")
|
|
|
private ModbusTcpMasterTemplate modbusTcpMasterTemplateFirst;
|
|
|
|
|
|
+ /**
|
|
|
+ * 自动门(靠马路-第二层)
|
|
|
+ */
|
|
|
+ @Autowired(required = false)
|
|
|
+ @Qualifier("modbusTcpMasterTemplateSixth")
|
|
|
+ private ModbusTcpMasterTemplate modbusTcpMasterTemplateSixth;
|
|
|
+
|
|
|
/**
|
|
|
* 自动门
|
|
|
*/
|
|
@@ -35,6 +46,76 @@ public class AutoDoorClient {
|
|
|
@Qualifier("modbusTcpMasterTemplateSecond")
|
|
|
private ModbusTcpMasterTemplate modbusTcpMasterTemplateSecond;
|
|
|
|
|
|
+ /**
|
|
|
+ * 卷帘门
|
|
|
+ */
|
|
|
+ @Autowired(required = false)
|
|
|
+ @Qualifier("modbusTcpMasterTemplateSeventh")
|
|
|
+ private ModbusTcpMasterTemplate modbusTcpMasterTemplateSeventh;
|
|
|
+
|
|
|
+ private Map<String, ModbusTcpMasterTemplate> tcpMasterTemplateMap;
|
|
|
+
|
|
|
+ @PostConstruct
|
|
|
+ public void initMap() {
|
|
|
+ tcpMasterTemplateMap = new HashMap<>();
|
|
|
+ tcpMasterTemplateMap.put(AUTO_DOOR_NO.A.name(), modbusTcpMasterTemplateFirst);
|
|
|
+ tcpMasterTemplateMap.put(AUTO_DOOR_NO.B.name(), modbusTcpMasterTemplateSecond);
|
|
|
+ tcpMasterTemplateMap.put(AUTO_DOOR_NO.C.name(), modbusTcpMasterTemplateSixth);
|
|
|
+ tcpMasterTemplateMap.put(AUTO_DOOR_NO.D.name(), modbusTcpMasterTemplateSeventh);
|
|
|
+ }
|
|
|
+
|
|
|
+ public ModbusMasterUtil getModbusMasterUtil(AUTO_DOOR_NO doorNo) {
|
|
|
+ return tcpMasterTemplateMap.get(doorNo.name()).getModbusMasterUtil();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 自动门编号
|
|
|
+ */
|
|
|
+ public enum AUTO_DOOR_NO {
|
|
|
+ /***
|
|
|
+ * 靠墙门
|
|
|
+ */
|
|
|
+ A("1"),
|
|
|
+ /***
|
|
|
+ * 靠室内
|
|
|
+ */
|
|
|
+ B("2"),
|
|
|
+ /***
|
|
|
+ * 靠墙门(第二层)
|
|
|
+ */
|
|
|
+ C("3"),
|
|
|
+ /***
|
|
|
+ * 卷帘门
|
|
|
+ */
|
|
|
+ D("4");
|
|
|
+
|
|
|
+ private String value;
|
|
|
+
|
|
|
+ AUTO_DOOR_NO(String value) {
|
|
|
+ this.value = value;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getValue() {
|
|
|
+ return value;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据值获得枚举类型 switch
|
|
|
+ *
|
|
|
+ * @param value
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static AUTO_DOOR_NO getByValue(String value) {
|
|
|
+ for (AUTO_DOOR_NO code : values()) {
|
|
|
+ if (code.getValue().equals(value)) {
|
|
|
+ return code;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 自动门命令
|
|
|
*/
|
|
@@ -105,71 +186,66 @@ public class AutoDoorClient {
|
|
|
/**
|
|
|
* 开门
|
|
|
*
|
|
|
- * @param con true代表靠马路的自动门 false墙里面的自动门
|
|
|
+ * @param doorNo
|
|
|
*/
|
|
|
- public Boolean sendOpen(Boolean con) {
|
|
|
- ModbusMasterUtil modbusMasterUtil = con ? modbusTcpMasterTemplateFirst.getModbusMasterUtil()
|
|
|
- : modbusTcpMasterTemplateSecond.getModbusMasterUtil();
|
|
|
- sendCloseClear(con);
|
|
|
+ public Boolean sendOpen(AUTO_DOOR_NO doorNo) {
|
|
|
+ ModbusMasterUtil modbusMasterUtil = getModbusMasterUtil(doorNo);
|
|
|
+ sendCloseClear(doorNo);
|
|
|
Boolean r = modbusMasterUtil.writeHoldingRegisters(WRITE_OPEN.getSlaveId(), WRITE_OPEN.offset, WRITE_OPEN.getValue());
|
|
|
try {
|
|
|
Thread.sleep(1000);
|
|
|
} catch (InterruptedException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
- sendOpenClear(con);
|
|
|
+ sendOpenClear(doorNo);
|
|
|
return r;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 关门
|
|
|
*
|
|
|
- * @param con true代表靠马路的自动门 false墙里面的自动门
|
|
|
+ * @param doorNo
|
|
|
*/
|
|
|
- public Boolean sendClose(Boolean con) {
|
|
|
- ModbusMasterUtil modbusMasterUtil = con ? modbusTcpMasterTemplateFirst.getModbusMasterUtil()
|
|
|
- : modbusTcpMasterTemplateSecond.getModbusMasterUtil();
|
|
|
- sendOpenClear(con);
|
|
|
+ public Boolean sendClose(AUTO_DOOR_NO doorNo) {
|
|
|
+ ModbusMasterUtil modbusMasterUtil = getModbusMasterUtil(doorNo);
|
|
|
+ sendOpenClear(doorNo);
|
|
|
Boolean r = modbusMasterUtil.writeHoldingRegisters(WRITE_CLOSE.getSlaveId(), WRITE_CLOSE.offset, WRITE_CLOSE.getValue());
|
|
|
try {
|
|
|
Thread.sleep(1000);
|
|
|
} catch (InterruptedException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
- sendCloseClear(con);
|
|
|
+ sendCloseClear(doorNo);
|
|
|
return r;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 开门清除标记
|
|
|
*
|
|
|
- * @param con true代表靠马路的自动门 false墙里面的自动门
|
|
|
+ * @param doorNo
|
|
|
*/
|
|
|
- public Boolean sendOpenClear(Boolean con) {
|
|
|
- ModbusMasterUtil modbusMasterUtil = con ? modbusTcpMasterTemplateFirst.getModbusMasterUtil()
|
|
|
- : modbusTcpMasterTemplateSecond.getModbusMasterUtil();
|
|
|
+ public Boolean sendOpenClear(AUTO_DOOR_NO doorNo) {
|
|
|
+ ModbusMasterUtil modbusMasterUtil = getModbusMasterUtil(doorNo);
|
|
|
return modbusMasterUtil.writeHoldingRegisters(WRITE_OPEN.getSlaveId(), WRITE_OPEN.offset, WRITE_OPEN.getClear());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 关门清除标记
|
|
|
*
|
|
|
- * @param con true代表靠马路的自动门 false墙里面的自动门
|
|
|
+ * @param doorNo
|
|
|
*/
|
|
|
- public Boolean sendCloseClear(Boolean con) {
|
|
|
- ModbusMasterUtil modbusMasterUtil = con ? modbusTcpMasterTemplateFirst.getModbusMasterUtil()
|
|
|
- : modbusTcpMasterTemplateSecond.getModbusMasterUtil();
|
|
|
+ public Boolean sendCloseClear(AUTO_DOOR_NO doorNo) {
|
|
|
+ ModbusMasterUtil modbusMasterUtil = getModbusMasterUtil(doorNo);
|
|
|
return modbusMasterUtil.writeHoldingRegisters(WRITE_CLOSE.getSlaveId(), WRITE_CLOSE.offset, WRITE_CLOSE.getClear());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询开门状态 暂时用不到
|
|
|
*
|
|
|
- * @param con true代表靠马路的自动门 false墙里面的自动门
|
|
|
+ * @param
|
|
|
*/
|
|
|
- public AjaxResult readOpenSts(Boolean con) {
|
|
|
- ModbusMasterUtil modbusMasterUtil = con ? modbusTcpMasterTemplateFirst.getModbusMasterUtil()
|
|
|
- : modbusTcpMasterTemplateSecond.getModbusMasterUtil();
|
|
|
+ public AjaxResult readOpenSts(AUTO_DOOR_NO doorNo) {
|
|
|
+ ModbusMasterUtil modbusMasterUtil = getModbusMasterUtil(doorNo);
|
|
|
ReadResponse readResponse = modbusMasterUtil.readHoldingRegisters(RAED_OPEN_STS.getSlaveId(), RAED_OPEN_STS.getOffset(), RAED_OPEN_STS.getValue());
|
|
|
boolean[] booleanData = readResponse.getBooleanData();
|
|
|
return AjaxResult.success("", booleanData);
|
|
@@ -178,11 +254,10 @@ public class AutoDoorClient {
|
|
|
/**
|
|
|
* 查询关门门状态 暂时用不到
|
|
|
*
|
|
|
- * @param con true代表靠马路的自动门 false墙里面的自动门
|
|
|
+ * @param doorNo
|
|
|
*/
|
|
|
- public AjaxResult readCloseSts(Boolean con) {
|
|
|
- ModbusMasterUtil modbusMasterUtil = con ? modbusTcpMasterTemplateFirst.getModbusMasterUtil()
|
|
|
- : modbusTcpMasterTemplateSecond.getModbusMasterUtil();
|
|
|
+ public AjaxResult readCloseSts(AUTO_DOOR_NO doorNo) {
|
|
|
+ ModbusMasterUtil modbusMasterUtil = getModbusMasterUtil(doorNo);
|
|
|
ReadResponse readResponse = modbusMasterUtil.readHoldingRegisters(RAED_ClOSE_STS.getSlaveId(), RAED_ClOSE_STS.getOffset(), RAED_ClOSE_STS.getValue());
|
|
|
boolean[] booleanData = readResponse.getBooleanData();
|
|
|
return AjaxResult.success("", booleanData);
|