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