From c40d049233f2706dd23aadf327dbf86ba0008a12 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 01 十二月 2023 15:04:16 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java |  118 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 106 insertions(+), 12 deletions(-)

diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java
index 0a07ff7..e50537f 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java
@@ -6,16 +6,20 @@
 import com.dy.common.threadPool.ThreadPool;
 import com.dy.common.util.ByteUtil;
 import com.dy.testClient.ServerProperties;
-import org.apache.mina.core.future.CloseFuture;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.mina.core.session.IoSession;
 
 public class MyThreadJob  implements ThreadPool.Job {
+
+    private static final Logger log = LogManager.getLogger(MyThreadJob.class) ;
 
     public String rtuAddr;
     public String serverIp;
     public Integer serverPort;
 
     public IoSession session ;
+    public boolean exceptionOnConnect = false ;
 
     public static final int connectTimeout = 3000 ;
 
@@ -34,12 +38,9 @@
 
     @Override
     public void execute() throws Exception {
-        if(session == null){
-            IoSession se = new TcpConnect().createSession(this.rtuAddr, this, this.serverIp, this.serverPort, connectTimeout, new TcpHandler()) ;
-            if(se != null){
-                this.session = se ;
-            }
-        }else{
+        log.info("RTU" + rtuAddr + "寮�濮嬩换鍔�");
+        if(session != null){
+            log.info("RTU" + rtuAddr + "灏嗚鎵ц" + ServerProperties.sendTimes + "杞浠诲姟锛屽綋鍓嶈疆娆℃槸" + sendTimes);
             if(sendTimes <= ServerProperties.sendTimes){
                 sendDataOfP206V1_0_0() ;
             }else{
@@ -53,9 +54,11 @@
             if(heartbeatTimes >= ServerProperties.heartbeatTimes){
                 heartbeatTimes = 0 ;
                 this.sendReportData() ;
+                TcpClUnit.clientSendData();
                 sendTimes++ ;
             }else{
                 this.sendHeartbeat() ;
+                TcpClUnit.clientSendData();
                 heartbeatTimes++ ;
             }
         }catch(Exception e){
@@ -66,23 +69,30 @@
         try{
             byte[] bs = this.createHeartbeat() ;
             this.session.write(bs) ;
+            log.info("RTU" + rtuAddr + "鍙戦�佷簡蹇冭烦鏁版嵁锛�" + ByteUtil.bytes2Hex(bs, false));
         }catch (Exception e){
             e.printStackTrace();
         }
     }
 
     private void sendReportData(){
-        TcpClUnit.clientSendData();
+        try{
+            byte[] bs = this.createReport() ;
+            this.session.write(bs) ;
+            log.info("RTU" + rtuAddr + "鍙戦�佷簡涓婃姤鏁版嵁锛�" + ByteUtil.bytes2Hex(bs, false));
+        }catch (Exception e){
+            e.printStackTrace();
+        }
     }
 
     private void jobOver(){
-        CloseFuture closeFuture = session.closeOnFlush() ;
+        session.closeOnFlush() ;
         this.isOver = true ;
         TcpClUnit.clientOver() ;
     }
 
     /**
-     * 鏋勯�犱笅琛屾暟鎹�
+     * 鏋勯�犲績璺虫暟鎹�
      * @return 瀛楄妭鏁扮粍
      * @throws Exception 寮傚父
      */
@@ -100,7 +110,7 @@
         bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
 
         index++ ;
-        bsHead[index] = commonV1_0_1.createCtrl((byte)0) ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0x80, (byte)0) ;//鎺у埗鍩熷姛鑳界爜锛氱‘璁� 璁ゅ彲
 
         index++ ;
         GlCreate.createRtuAddr(this.rtuAddr, bsHead, index);
@@ -115,7 +125,91 @@
 
         GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
 
-        bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
+
+        return bytes ;
+    }
+
+    /**
+     * 鏋勯�犱笂鎶ユ暟鎹�
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] createReport( ) throws Exception {
+        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
+        byte[] bytes ;
+        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
+        byte index = 0 ;
+        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
+
+        index++ ;
+        bsHead[index] = 0 ;//甯ч暱搴�
+
+        index++ ;
+        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
+
+        index++ ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0x80, (byte)3) ;//鎺у埗鍩熷姛鑳界爜3锛氳嚜鎶ュ抚锛屾祦閲忥紙姘撮噺锛夊弬鏁�
+
+        index++ ;
+        GlCreate.createRtuAddr(this.rtuAddr, bsHead, index);
+        index += 5 ;
+
+        ByteUtil.hex2Bytes("C0", bsHead, index) ;
+
+        byte[] bs = new byte[2] ;
+        bs[0] = (byte)0x04 ;//鏈夋祦閲忔暟鎹�
+        bs[1] = (byte)0xE0 ;//鏈夋按鍘嬨�佺數姹犵數鍘嬨�佷俊鍙峰己搴�
+
+        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
+
+        bs = new byte[5] ;//鐬椂娴侀噺
+        bs[0] = ByteUtil.int2BCD_LE (21)[0] ;
+        bs[1] = ByteUtil.int2BCD_LE (43)[0] ;
+        bs[2] = ByteUtil.int2BCD_LE (65)[0] ;
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;//绱娴侀噺
+        bs[0] = ByteUtil.int2BCD_LE (21)[0] ;
+        bs[1] = ByteUtil.int2BCD_LE (43)[0] ;
+        bs[2] = ByteUtil.int2BCD_LE (65)[0] ;
+        bs[3] = ByteUtil.int2BCD_LE (87)[0] ;
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;//鎹熷け娴侀噺
+        bs[0] = ByteUtil.int2BCD_LE (10)[0] ;
+        bs[1] = ByteUtil.int2BCD_LE (32)[0] ;
+        bs[2] = ByteUtil.int2BCD_LE (54)[0] ;
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[4] ;//姘村帇
+        bs[0] = ByteUtil.int2BCD_LE (10)[0] ;
+        bs[1] = ByteUtil.int2BCD_LE (32)[0] ;
+        bs[2] = ByteUtil.int2BCD_LE (4)[0] ;
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[4] ;//鐢垫睜鐢靛帇
+        bs[0] = ByteUtil.int2BCD_LE (10)[0] ;
+        bs[1] = ByteUtil.int2BCD_LE (32)[0] ;
+        bs[2] = ByteUtil.int2BCD_LE (10)[0] ;
+        bs[3] = ByteUtil.int2BCD_LE (32)[0] ;
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[1] ;//淇″彿寮哄害
+        bs[0] = ByteUtil.int2BCD_LE (21)[0] ;
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[6] ;//鏃堕挓
+        GlCreate.createTp(bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
 
         return bytes ;
     }

--
Gitblit v1.8.0