pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/Server.java
@@ -92,6 +92,7 @@ // /////////////// // 基础配置 ServerProperties.rtuAddr = conf.getSetAttrTxt(doc, "config.base", "rtuAddr", null, false, null); ServerProperties.onlyOneHeartBeat = conf.getSetAttrBoolean(doc, "config.base", "onlyOneHeartBeat", null, null); ServerProperties.icCardAddr = conf.getSetAttrTxt(doc, "config.base", "icCardAddr", null, false, null); ServerProperties.icCardNo = conf.getSetAttrTxt(doc, "config.base", "icCardNo", null, false, null); pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/ServerProperties.java
@@ -7,6 +7,7 @@ */ public class ServerProperties { public static String rtuAddr ; public static Boolean onlyOneHeartBeat ; public static String icCardAddr ; public static String icCardNo ; } pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/p206V1_0_0/RtuP206V1_0_0Ctrl.java
@@ -1,6 +1,7 @@ package com.dy.pipIrrMwTestRtu.p206V1_0_0; import com.dy.common.webUtil.BaseResponse; import com.dy.pipIrrMwTestRtu.tcpClient.upData.UpCd38; import com.dy.pipIrrMwTestRtu.tcpClient.upData.UpCd83Close; import com.dy.pipIrrMwTestRtu.tcpClient.upData.UpCd83Open; import com.dy.pipIrrMwTestRtu.tcpClient.upData.UpCd84; @@ -23,11 +24,13 @@ @GetMapping(path = "test") public BaseResponse<String> test(String com) { if(com.equals("83Open")){ UpCd83Open.upCd83Data(); UpCd83Open.upData(); }else if(com.equals("83Close")){ UpCd83Close.upCd83Data(); UpCd83Close.upData(); }else if(com.equals("84")){ UpCd84.upCd84Data(); UpCd84.upData(); }else if(com.equals("38")){ UpCd38.upData(); } BaseResponse<String> rt = new BaseResponse<String>() ; rt.setCode("001") ; pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/TcpClUnit.java
@@ -108,13 +108,22 @@ new Thread(new Runnable(){ @Override public void run() { while(true){ if(ServerProperties.onlyOneHeartBeat){ try { UpHeartBeat.upCd02Data(ServerProperties.rtuAddr); Thread.sleep(30000L); //Thread.sleep(30000000L); }catch (Exception e){ continue; } }else{ while(true){ try { UpHeartBeat.upCd02Data(ServerProperties.rtuAddr); Thread.sleep(30000L); //Thread.sleep(30000000L); }catch (Exception e){ continue; } } } } pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd38.java
New file @@ -0,0 +1,80 @@ package com.dy.pipIrrMwTestRtu.tcpClient.upData; import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; import com.dy.common.util.ByteUtil; import com.dy.common.util.DateTime; import com.dy.pipIrrMwTestRtu.ServerProperties; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** * @Author: liurunyu * @Date: 2024/7/22 15:01 * @Description */ public class UpCd38 extends UpData { private static final Logger log = LogManager.getLogger(UpCd38.class); public static void upData() { try { if (UpData.session != null && UpData.session.isConnected()) { byte[] bs = createData(ServerProperties.rtuAddr); UpData.upSend(bs); } else { log.error("未连接通信中间件,不能发送数据"); } } catch (Exception e) { log.error("向通信中间件发送数据产生异常", e); } } /** * 构造数据 * * @return 字节数组 * @throws Exception 异常 */ private static byte[] createData(String rtuAddr) throws Exception { byte[] bytes = creatHead(rtuAddr, "38", (byte)0xB0); byte[] bs = new byte[1] ; bs[0] = (byte)0x00 ;//报警金额高位 bytes = ByteUtil.bytesMerge(bytes, bs) ; bs = new byte[1] ; ByteUtil.int2BCD_LE(40, bs, 0); bytes = ByteUtil.bytesMerge(bytes, bs) ; bs = new byte[1] ;//秒钟 ByteUtil.int2BCD_LE(Integer.parseInt(DateTime.ss()), bs, 0); bytes = ByteUtil.bytesMerge(bytes, bs) ; bs = new byte[1] ;//分钟 ByteUtil.int2BCD_LE(Integer.parseInt(DateTime.mm()), bs, 0); bytes = ByteUtil.bytesMerge(bytes, bs) ; bs = new byte[1] ;//时钟 ByteUtil.int2BCD_LE(Integer.parseInt(DateTime.HH()), bs, 0); bytes = ByteUtil.bytesMerge(bytes, bs) ; bs = new byte[1] ;//日 ByteUtil.int2BCD_LE(Integer.parseInt(DateTime.dd()), bs, 0); bytes = ByteUtil.bytesMerge(bytes, bs) ; bs = new byte[]{(byte)0x0A} ;// bytes = ByteUtil.bytesMerge(bytes, bs) ; GlCreate.createLen(bytes);//长度放字节数组中 byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中 bytes = ByteUtil.bytesMerge(bytes, bsTail) ; return bytes ; } } pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Close.java
@@ -15,7 +15,7 @@ private static final Logger log = LogManager.getLogger(UpCd83Close.class); public static void upCd83Data() { public static void upData() { try { if (UpData.session != null && UpData.session.isConnected()) { byte[] bs = createData(ServerProperties.rtuAddr); pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Open.java
@@ -16,7 +16,7 @@ private static final Logger log = LogManager.getLogger(UpCd83Open.class); public static void upCd83Data() { public static void upData() { try { if (UpData.session != null && UpData.session.isConnected()) { byte[] bs = createData(ServerProperties.rtuAddr); pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd84.java
@@ -15,7 +15,7 @@ private static final Logger log = LogManager.getLogger(UpCd84.class); public static void upCd84Data() { public static void upData() { try { if (UpData.session != null && UpData.session.isConnected()) { byte[] bs = createData(ServerProperties.rtuAddr); @@ -30,7 +30,7 @@ /** * 构造心跳数据 * 构造数据 * * @return 字节数组 * @throws Exception 异常 pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/Config.xml
@@ -2,7 +2,7 @@ <config> <server name="RTU模拟器" showStartInfo="true" company="http://www.dyjs.com"/> <base rtuAddr="532328059995" icCardAddr="3B7D1E1A" icCardNo="61181622830147821"></base> <base rtuAddr="532328059995" onlyOneHeartBeat="true" icCardAddr="3B7D1E1A" icCardNo="61181622830147821"></base> <!-- --> <tcpCl mwServerIp="127.0.0.1" mwServerPort="60000" connectTimeout="3000" /> <tcpCl mwServerIp="192.168.40.182" mwServerPort="60000" connectTimeout="3000" /> </config>