From 5902545a506691139ecc1d1d9930cd357fd87b3c Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期一, 22 七月 2024 16:22:41 +0800
Subject: [PATCH] 1、完善RTU模拟器; 2、RTU模拟器增加38上报数据。

---
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd38.java      |   80 ++++++++++++++++++++++++++++++++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/TcpClUnit.java          |   13 +++++-
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Open.java  |    2 
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/Config.xml                                          |    4 +-
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/Server.java                       |    1 
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/p206V1_0_0/RtuP206V1_0_0Ctrl.java |    9 +++-
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Close.java |    2 
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd84.java      |    4 +-
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/ServerProperties.java             |    1 
 9 files changed, 105 insertions(+), 11 deletions(-)

diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/Server.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/Server.java
index a7da4eb..6dd6f12 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/Server.java
+++ b/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);
 
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/ServerProperties.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/ServerProperties.java
index 229a7c7..2af487d 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/ServerProperties.java
+++ b/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 ;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/p206V1_0_0/RtuP206V1_0_0Ctrl.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/p206V1_0_0/RtuP206V1_0_0Ctrl.java
index 6c9ad33..7518550 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/p206V1_0_0/RtuP206V1_0_0Ctrl.java
+++ b/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") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/TcpClUnit.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/TcpClUnit.java
index d698a66..6d8eced 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/TcpClUnit.java
+++ b/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;
+                        }
                     }
                 }
             }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd38.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd38.java
new file mode 100644
index 0000000..6a1deab
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd38.java
@@ -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 ;
+    }
+}
+
+
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Close.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Close.java
index 05a43a0..4f30f01 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Close.java
+++ b/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);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Open.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Open.java
index d2dad7c..c7c4eae 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Open.java
+++ b/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);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd84.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd84.java
index c015151..3c70638 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd84.java
+++ b/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 寮傚父
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/Config.xml b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/Config.xml
index d2541cf..58f8a1d 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/Config.xml
+++ b/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>		
\ No newline at end of file

--
Gitblit v1.8.0