From 071a8328823a2861f93ce556a4da3e4119cab1a3 Mon Sep 17 00:00:00 2001
From: panlili2024 <14743743+panlili2024@user.noreply.gitee.com>
Date: 星期四, 19 九月 2024 16:24:28 +0800
Subject: [PATCH] 完成金茂定制功能

---
 HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLSerialPortCore.java |  191 ++++++++---------------------------------------
 1 files changed, 33 insertions(+), 158 deletions(-)

diff --git a/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLSerialPortCore.java b/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLSerialPortCore.java
index 670c4c9..64546f2 100644
--- a/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLSerialPortCore.java
+++ b/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLSerialPortCore.java
@@ -9,6 +9,7 @@
 import com.hdl.sdk.ttl.Config.Configuration;
 import com.hdl.sdk.ttl.HDLDeviceManger.Bean.UdpDataBean;
 import com.hdl.sdk.ttl.HDLDeviceManger.HDLListener.IMcuOtaListener;
+import com.hdl.sdk.ttl.Utils.HDLUtlis.SerialPortSendAndReceiveUtil;
 import com.hdl.sdk.ttl.Utils.LogUtils.HDLLog;
 
 import java.io.File;
@@ -25,14 +26,14 @@
  */
 public class HDLSerialPortCore {
     //涓插彛璁惧璺緞鍚�
-    private static String mPathname = "/dev/ttyS2";
+    private static String mPathname = "/dev/ttyS4";
     //娉㈢壒鐜�
     private static int mBaudrate = 115200;
 
     //    public static SerialPortFinder mSerialPortFinder = new SerialPortFinder();
-    private static SerialPort mSerialPort = null;
-    private static InputStream mInputStream = null;
-    private static OutputStream mOutputStream = null;
+    public static SerialPort mSerialPort = null;
+    public static InputStream mInputStream = null;
+    public static OutputStream mOutputStream = null;
     //    private static HDLReadDatasThread mHDLReadDatasThread = new HDLReadDatasThread();
 
     //    private static HDLRead485DatasThread mHDLRead485DatasThread = new HDLRead485DatasThread();
@@ -43,7 +44,7 @@
     private static List<Byte> mReceiveDatasList = new ArrayList<Byte>();//鎺ユ敹鏁版嵁闃熷垪
 //    private static List<Byte> mReceive485DatasList = new ArrayList<Byte>();//485鎺ユ敹鏁版嵁闃熷垪
 
-    public static Boolean bPassThrough = false; //鍒ゆ柇鏄惁閫忎紶
+    public static Boolean isModule = false; //鍒ゆ柇鏄惁甯︽ā缁�
     public static IMcuOtaListener mIMcuOtaListener;
     public static byte[] upgradeFileDatas;      //鍗囩骇鏂囦欢鏁版嵁
 
@@ -94,7 +95,12 @@
                 mInputStream = mSerialPort.getInputStream();
                 mOutputStream = mSerialPort.getOutputStream();
                 bOpenSuccess = true;
-                startHDLThread();
+
+                if (HDLSerialPortCore.getIsModule()) {//甯︽ā缁勶紝璧版爣鍑嗕覆鍙�
+                    startHDLThread();
+                } else {//涓嶅甫妯$粍锛岃蛋閫忎紶
+                    SerialPortSendAndReceiveUtil.getInstance().start();
+                }
             } catch (IOException e) {
                 e.printStackTrace();
                 bOpenSuccess = false;
@@ -148,74 +154,11 @@
      * 鍚姩涓插彛 鍙戦�佸拰鎺ユ敹绾跨▼
      */
     private static void startHDLThread() {
-//        mHDLRead485DatasThread = new HDLRead485DatasThread();
         mHDLReadMCUDatasThread = new HDLReadMCUDatasThread();
         mHDLSendDatasThread = new HDLSendDatasThread();
-//        mHDLRead485DatasThread.start();
         mHDLReadMCUDatasThread.start();
         mHDLSendDatasThread.start();
     }
-
-//
-//    /**
-//     * 涓插彛鎺ユ敹绾跨▼
-//     *
-//     * @author 2019骞�06鏈�26鏃�
-//     */
-//    private static class HDLReadDatasThread extends Thread {
-//
-//        @Override
-//        public void run() {
-//            super.run();
-//            HDLLog.I("鎺ユ敹绾跨▼ 寮�鍚�");
-//
-//            while (bOpenSuccess) {
-//                int size = 0;
-//                try {
-//                    if (mInputStream == null) return;
-//
-//                    byte[] buffer = new byte[64];
-//                    size = mInputStream.read(buffer);
-//                    for (int i = 0; i < size; i++) {
-//                        mReceiveDatasList.add(buffer[i]);
-//                    }
-//
-//                    while (0 < mReceiveDatasList.size()) {
-//                        HDLLog.I("arraylist.size():" + mReceiveDatasList.size());
-//                        if (mReceiveDatasList.size() < 3) break;//2019-07-02
-//                        int len = -1;
-//                        int startIndex = 0;
-//                        for (startIndex = 0; startIndex < mReceiveDatasList.size(); startIndex++) {
-//                            if ((mReceiveDatasList.get(startIndex) & 0xFF) == 0xAA
-//                                    && (mReceiveDatasList.get(startIndex + 1) & 0xFF) == 0xAA) {
-//                                len = (mReceiveDatasList.get(startIndex + 2) & 0xFF) + 2;//鍙戠幇len浼氬嚭鐜拌礋鏁板鍔� & 0xFF 杩愮畻
-//                                break;
-//                            }
-//                        }
-//                        if (len == -1 || mReceiveDatasList.size() < len) break;
-//
-//                        HDLLog.I("startIndex:" + startIndex + "   LEN:" + len);
-//                        for (int i = 0; i < startIndex; i++) {
-//                            if (mReceiveDatasList.size() < 1) break;//2019-07-02
-//                            mReceiveDatasList.remove(0);
-//                        }
-//                        byte[] tempBytes = new byte[len];
-//                        for (int i = 0; i < tempBytes.length; i++) {
-//                            if (mReceiveDatasList.size() < 1) break;//2019-07-02
-//
-//                            tempBytes[i] = mReceiveDatasList.get(0);
-//                            mReceiveDatasList.remove(0);
-//                        }
-//                        HandleHDLdata(tempBytes);
-//                    }
-//                } catch (Exception e) {
-//                    e.printStackTrace();
-//                    HDLLog.I("error:" + e.getMessage());
-//                }
-//            }
-//            HDLLog.I("鎺ユ敹绾跨▼ 鍏抽棴");
-//        }
-//    }
 
     /**
      * 涓插彛鎺ユ敹绾跨▼
@@ -244,6 +187,7 @@
                         mReceiveDatasList.add(buffer[i]);
                     }
 
+
                     while (0 < mReceiveDatasList.size()) {
 //                        HDLLog.I("arraylist.size():" + mReceiveDatasList.size());
                         if (mReceiveDatasList.size() < 3) break;//2019-07-02
@@ -262,7 +206,6 @@
                                 break;
                             }
                         }
-
                         if (len == -1 || mReceiveDatasList.size() < len) break;
 //                        HDLLog.I("startIndex:" + startIndex + "   LEN:" + len);
                         for (int i = 0; i < startIndex; i++) {
@@ -288,63 +231,6 @@
             HDLLog.I("鎺ユ敹绾跨▼ 鍏抽棴");
         }
     }
-
-//    /**
-//     * 485鏁版嵁鎺ユ敹绾跨▼
-//     *
-//     * @author 2019骞�06鏈�26鏃�
-//     */
-//    private static class HDLRead485DatasThread extends Thread {
-//
-//        @Override
-//        public void run() {
-//            super.run();
-//            HDLLog.I("485鎺ユ敹绾跨▼ 寮�鍚�");
-//            while (bOpenSuccess) {
-//                int size = 0;
-//                try {
-//                    Thread.sleep(10);
-//                    while (0 < mReceive485DatasList.size()) {
-////                        HDLLog.I("485arraylist.size():" + mReceive485DatasList.size());
-//                        if (mReceive485DatasList.size() < 3) break;//2019-07-02
-//                        if (mReceive485DatasList.size() > 500) { //鏁版嵁缂撳瓨澶閿欒鎯呭喌涓� 娓呯┖涓�娆�
-//                            mReceive485DatasList.clear();
-//                            break;//2019-07-24
-//                        }
-//                        int len = -1;
-//                        int startIndex = 0;
-//                        for (startIndex = 0; startIndex < mReceive485DatasList.size(); startIndex++) {
-//                            if ((mReceive485DatasList.get(startIndex) & 0xFF) == 0xAA
-//                                    && (mReceive485DatasList.get(startIndex + 1) & 0xFF) == 0xAA) {
-//                                len = (mReceive485DatasList.get(startIndex + 2) & 0xFF) + 2;//鍙戠幇len浼氬嚭鐜拌礋鏁板鍔� & 0xFF 杩愮畻
-//                                break;
-//                            }
-//                        }
-//                        if (len == -1 || mReceive485DatasList.size() < len) break;
-//
-////                        HDLLog.I("startIndex:" + startIndex + "   LEN:" + len);
-//                        for (int i = 0; i < startIndex; i++) {
-//                            if (mReceive485DatasList.size() < 1) break;//2019-07-02
-//                            mReceive485DatasList.remove(0);
-//                        }
-//                        byte[] tempBytes = new byte[len];
-//                        for (int i = 0; i < tempBytes.length; i++) {
-//                            if (mReceive485DatasList.size() < 1) break;//2019-07-02
-//
-//                            tempBytes[i] = mReceive485DatasList.get(0);
-//                            mReceive485DatasList.remove(0);
-//                        }
-//                        HandleHDLdata(tempBytes);
-//                    }
-//                } catch (Exception e) {
-//                    e.printStackTrace();
-//                    HDLLog.I("error:" + e.getMessage());
-//                }
-//            }
-//            HDLLog.I("485鎺ユ敹绾跨▼ 鍏抽棴");
-//        }
-//    }
-
 
     /**
      * 涓插彛鍙戦�佺嚎绋�
@@ -387,7 +273,15 @@
         }
     }
 
-//    /**
+    public static Boolean getIsModule() {
+        return isModule;
+    }
+
+    public static void setIsModule(Boolean isModule) {
+        HDLSerialPortCore.isModule = isModule;
+    }
+
+    //    /**
 //     * 鍙戦�丮UC涓插彛鍗忚鏁版嵁鍖�
 //     * @param mcuDataList
 //     * @param bPassThrough 鏄惁涓洪�忎紶
@@ -460,7 +354,7 @@
      *
      * @param receiveBytes
      */
-    private synchronized static void HandleHDLdata(byte[] receiveBytes) {
+    public synchronized static void HandleHDLdata(byte[] receiveBytes) {
         if (receiveBytes.length < 14) {
             return;
         }
@@ -470,6 +364,10 @@
 //            HDLLog.I("checkCRC锛氭楠屽け璐�");
             return;
         }
+
+        //鎿嶄綔鐮�
+        int command = (receiveBytes[7] & 0xFF) * 256 + (receiveBytes[8] & 0xFF);
+
         //鏁版嵁闀垮害
         int addDataLength = (receiveBytes[2] & 0xFF) - 11;
         //闄勫姞鏁版嵁
@@ -477,8 +375,6 @@
         //澶嶅埗闄勫姞鏁版嵁
         System.arraycopy(receiveBytes, 11, usefulBytes, 0, addDataLength);
 
-        //鎿嶄綔鐮�
-        int command = (receiveBytes[7] & 0xFF) * 256 + (receiveBytes[8] & 0xFF);
         //婧愬瓙缃戝彿
         int sourceSubnetID = receiveBytes[3] & 0xFF;
         //婧愯澶囧彿
@@ -512,9 +408,9 @@
      *
      * @param sendDatas
      */
-    private static void HandleInsideData(UdpDataBean sendDatas) {
+    public static void HandleInsideData(UdpDataBean sendDatas) {
         switch (sendDatas.command) {
-            case Configuration.DEVICES_SEARCH_BACK_COMMAND:
+            case Configuration.DEVICES_SEARCH_FROM_GATEWAY_BACK_COMMAND:
 //                鍏堝垽鏂悳绱㈡ā寮忥紝瀹跺眳鎼滅储鍒欏彧闇�瑕佸垽鏂袱涓殢鏈烘暟銆傞厭搴楁悳绱㈠垯闇�瑕佸垽鏂袱涓殢鏈烘暟鍜宨p鍦板潃
                 if (HandleSearch.curSearchMode == HandleSearch.GET_BUS_DEVICES) {
                     if (sendDatas.addBytes[0] == HandleSearch.random1
@@ -523,12 +419,10 @@
                     }
                 } else {
                     if (sendDatas.addBytes[0] == HandleSearch.random1
-                            && sendDatas.addBytes[1] == HandleSearch.random2
-                    ) {
+                            && sendDatas.addBytes[1] == HandleSearch.random2) {
                         HDLDeviceManager.handle(sendDatas, sendDatas.command);
                     }
                 }
-
                 break;
 
             /***2020-04-01 鏂板閫氱敤寮�鍏�**/
@@ -552,7 +446,7 @@
             case Configuration.AIR_HVAC_STATE_BACK_COMMAND:
 //            case Configuration.RCU_ROOM_CAST_COMMAND:
 //            case Configuration.RCU_CURTAIN_CAST_COMMAND:
-            case Configuration.DEVICES_READ_BACK_COMMAND://璇诲彇澶囨敞鍛戒护
+            case Configuration.DEVICES_READ_FROM_GATEWAY_BACK_COMMAND://璇诲彇澶囨敞鍛戒护
             case Configuration.DEVICES_MODIFY_BACK_COMMAND://淇敼鍩烘湰淇℃伅鍥炲
             case Configuration.MODULE_UPDATE_REMARK_BACK_COMMAND://淇敼妯″潡澶囨敞鍥炲
             case Configuration.WARNING_COMMAND:
@@ -574,29 +468,10 @@
             case Configuration.DOOR_MACHINE_MODULE_CTRL_BACK_COMMAND://2023-08-22 鏂板 闂ㄩ攣
             case Configuration.DOOR_MACHINE_MODULE_STATE_BACK_COMMAND://2023-08-22 鏂板 闂ㄩ攣
             case Configuration.DOOR_MACHINE_BROADCAST_STATE_BACK_COMMAND://2023-08-25 鏂板闂ㄩ攣鐘舵�佸拰鎶ヨ骞挎挱
+            case Configuration.SCENE_SEARCH_FROM_GATEWAY_BACK_COMMAND:
+            case Configuration.SCENE_READ_FROM_GATEWAY_BACK_COMMAND:
                 HDLDeviceManager.handle(sendDatas, sendDatas.command);
                 break;
-
-
-//            case Configuration.RCU_SEARCH_COMMAND:
-////                if (sendDatas.port == Configuration.RCU_SEND_PORT) {
-//                    HDLLog.I( "鏀跺埌鎼滅储RCU鍛戒护");
-//                    HDLDeviceManager.handle(sendDatas, sendDatas.command);
-////                }
-//
-//                break;
-//            case Configuration.RCU_READ_SDK_INFO_COMMAND:
-////                if (sendDatas.desSubnetID == Crc.localSubnetID && sendDatas.desDeviceID == Crc.localDeviceID
-////                        ) {
-////                    HDLLog.I( "E508鏀跺埌");
-////                    HDLDeviceManager.handle(sendDatas, Configuration.RCU_READ);
-////                }
-////                if (sendDatas.port == Configuration.RCU_SEND_PORT) {
-//                    HDLLog.I( "鏀跺埌璇诲彇SDK淇℃伅鍛戒护");
-//                    HDLDeviceManager.handle(sendDatas, sendDatas.command);
-////                }
-
-//                break;
             case Configuration.MANUAL_ADD_DEVICE_COMMAND:
                 //鍥哄畾闅忔満鏁�181銆�250
                 if (sendDatas.addBytes[0] == ((byte) 181)

--
Gitblit v1.8.0