From b5444e6e566c2128bcb4fb522bfa636ee2c5b8fb Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期四, 25 八月 2022 15:37:18 +0800 Subject: [PATCH] 场景背景图问题修复 --- HDL_ON/Entity/Function/Scene.cs | 19 + HDL-ON_Android/Properties/AndroidManifest.xml | 2 HDL-ON_iOS/Info.plist | 4 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs | 5 HDL_ON/DAL/DriverLayer/Control.cs | 69 +++++++- HDL_ON/DAL/DriverLayer/Control_TcpClient.cs | 325 +++++++++++++++++++++++++++++++--------- HDL_ON/Entity/FunctionList.cs | 6 7 files changed, 339 insertions(+), 91 deletions(-) diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml index f4b6684..237fa87 100644 --- a/HDL-ON_Android/Properties/AndroidManifest.xml +++ b/HDL-ON_Android/Properties/AndroidManifest.xml @@ -1,5 +1,5 @@ 锘�<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.6.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202208151"> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.6.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202208191"> <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" /> <!--鍙嬬洘--> <!--<uses-sdk android:minSdkVersion="8"></uses-sdk>--> diff --git a/HDL-ON_iOS/Info.plist b/HDL-ON_iOS/Info.plist index 0000150..5c1818d 100644 --- a/HDL-ON_iOS/Info.plist +++ b/HDL-ON_iOS/Info.plist @@ -100,9 +100,9 @@ <key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>CFBundleShortVersionString</key> - <string>1.6.002208151</string> + <string>1.6.002208191</string> <key>CFBundleVersion</key> - <string>1.6.008151</string> + <string>1.6.008191</string> <key>NSLocationWhenInUseUsageDescription</key> <string>Use geographic location to provide services such as weather</string> <key>NSAppleMusicUsageDescription</key> diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs index ab30fc6..701af66 100644 --- a/HDL_ON/DAL/DriverLayer/Control.cs +++ b/HDL_ON/DAL/DriverLayer/Control.cs @@ -29,11 +29,27 @@ /// 璁板綍鎺ユ敹鍒扮殑娑堟伅锛屾柟渚縵b鐨勫伐绋嬪笀璋冭瘯浠栦滑鐨勮澶� /// </summary> public List<string> MsgInfoList = new List<string>(); + private bool _LocalTcpClientLogin = false; /// <summary> /// 鏈湴tcp瀹㈡埛绔繛鎺ユ槸鍚︽垚鍔� /// 鏄惁鐧诲綍缃戝叧鎴愬姛 /// </summary> - public bool LocalTcpClientLogin = false; + public bool LocalTcpClientLogin + { + get + { + return _LocalTcpClientLogin; + } + set + { + _LocalTcpClientLogin = value; + if (!value) + { + loginGatewayThread?.Abort(); + loginGatewayThread = null; + } + } + } int _msg_id = 1; /// <summary> @@ -222,8 +238,9 @@ if (myTcpClient == null) { myTcpClient = new Control_TcpClient(reportIp); - myTcpClient.Connect(); } + myTcpClient.Connect(); + } /// <summary> @@ -294,9 +311,9 @@ if(loginGatewayThread== null) { loginGatewayThread = new System.Threading.Thread(() => { - while (true) + while (!Ins.myTcpClient.isConnected) { - if (Ins.GatewayOnline_Local && myTcpClient.isConnected && LocalTcpClientLogin) + if (Ins.GatewayOnline_Local && myTcpClient.isConnected) { var sendData = new { clientType = "app", version = "1.0" }; var sendJob = new { id = Control.Ins.msg_id.ToString(), time_stamp = Utlis.GetTimestamp(), objects = sendData }; @@ -309,9 +326,28 @@ } System.Threading.Thread.Sleep(2000); } + //loginGatewayThread?.Abort(); + //loginGatewayThread = null; }); + loginGatewayThread.Start(); } + else + { + try + { + loginGatewayThread?.Abort(); + }catch (Exception ex) + { + MainPage.Log($"閲嶅惎鐧诲綍缃戝叧绾跨▼寮傚父:{ex.Message}"); + } + finally + { + loginGatewayThread = null; + LoginGateway(); + } + } + } @@ -880,7 +916,6 @@ { LocalCommunicationData receiveObj = new LocalCommunicationData(); - MainPage.Log($"灞�鍩熺綉淇℃伅: \r\n{receiveString}"); var res = receiveString.Split("\r\n\r\n"); @@ -912,9 +947,10 @@ //} receiveObj.BodyDataString = res[1]; - if(receiveObj.Topic == CommunicationTopic.ct.HeartBeat) + if (receiveObj.Topic == CommunicationTopic.ct.HeartBeat + "_reply") { - + Ins.myTcpClient.ClearHeartBeatLog(); + MainPage.Log("tcp蹇冭烦鍥炲"); return null; } @@ -924,7 +960,6 @@ //鍒ゆ柇褰撳墠缃戝叧鏄惁寮�鍚簡鏈湴鍔犲瘑 if (IsLocalEncryptAndGetAesKey) { - MainPage.Log($"灞�鍩熺綉淇℃伅 寮�濮嬭В瀵�"); if (originalReceiveBytes != null) { //鎷垮埌鍘熷Bytes鏁版嵁鍘昏В瀵� @@ -955,6 +990,10 @@ //MainPage.Log($"灞�鍩熺綉淇℃伅: 瑙e瘑鍚庯細" + receiveObj.BodyDataString); } + } + else + { + MainPage.Log($"灞�鍩熺綉淇℃伅: 鏄庢枃锛�" + receiveObj.BodyDataString); } } @@ -1008,7 +1047,6 @@ OpenTcpClent(); - LoginGateway(); } } @@ -1058,6 +1096,19 @@ if (temp.GetValue("objects").ToString().Contains("success")) { LocalTcpClientLogin = true; + try + { + loginGatewayThread?.Abort(); + } + catch (Exception ex) + { + MainPage.Log($"缁堟鐧诲綍缃戝叧tcp寮傚父锛歿ex.Message}"); + } + finally + { + loginGatewayThread = null; + } + MainPage.Log("灞�鍩熺綉tcp杩炴帴鐧诲綍缃戝叧鎴愬姛"); } } else diff --git a/HDL_ON/DAL/DriverLayer/Control_TcpClient.cs b/HDL_ON/DAL/DriverLayer/Control_TcpClient.cs index d6f61f1..c90eac3 100644 --- a/HDL_ON/DAL/DriverLayer/Control_TcpClient.cs +++ b/HDL_ON/DAL/DriverLayer/Control_TcpClient.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using HDL_ON.Entity; using Newtonsoft.Json; +using Newtonsoft.Json.Linq; namespace HDL_ON.DriverLayer { @@ -15,7 +16,25 @@ //澹版槑IP锛岀鍙o紝鍜屼竴涓敤鏉ヨ繛鎺ョ殑Socket public string _ip; - private TcpClient _tcpClient; + private TcpClient _clinet; + + private TcpClient _tcpClient { + get + { + return _clinet; + } + set + { + _clinet = value; + if (_clinet == null) { + if(connectThread!= null) + { + connectThread.Abort(); + connectThread = null; + } + } + } + } //鍒涘缓涓�涓鎵橈紝鐢ㄦ潵婊¤冻鍏朵粬绫昏皟鐢� //public delegate void DelegateMessage(string str); @@ -25,10 +44,47 @@ /// 杩炴帴娆℃暟 /// </summary> private int reconnectIndex = 0; + + private bool _isConnected = false; /// <summary> /// 鏄惁杩炴帴鎴愬姛 /// </summary> - public bool isConnected = false; + public bool isConnected { + get + { + return _isConnected; + } + set + { + _isConnected = value; + if (value) + { + Control.Ins.LoginGateway(); + HeartBeat(); + } + else + { + try + { + _tcpClient.Close(); + _tcpClient = null; + } + catch (Exception) + { + + } + } + } + } + + private List<string> heartBeatLogIdList = new List<string>(); + /// <summary> + /// 蹇冭烦璁板綍 + /// </summary> + public void ClearHeartBeatLog() + { + heartBeatLogIdList.Clear(); + } /// <summary> @@ -53,14 +109,14 @@ try { _tcpClient.Connect(IPAddress.Parse(_ip), 8586); - Task.Run(new Action(ReceiveMessage));//寮�鍚嚎绋嬶紝涓嶅仠鎺ユ敹娑堟伅 + ReceiveMessage();//寮�鍚嚎绋嬶紝涓嶅仠鎺ユ敹娑堟伅 MainPage.Log($"鎵撳紑tcp client{_ip}:8586"); isConnected = true; } catch (Exception e) { - MainPage.Log(e.Message); - throw; + MainPage.Log($"鎵撳紑tcp寮傚父锛�"+e.Message); + return false; } return true;//杩斿洖杩炴帴鐘舵�� } @@ -74,42 +130,80 @@ /// </summary> public void Connect() { - if(connectThread == null) + lock (lockObj) { - connectThread = new Thread(() => { - while (Control.Ins.GatewayOnline_Local) + if (isConnected) + { + return; + } + if (connectThread == null) + { + connectThread = new Thread(() => { - if (_tcpClient == null) + while (Control.Ins.GatewayOnline_Local && !isConnected) { - ConnectToTcp(); - } - else - { - if (!_tcpClient.Connected) + if (_tcpClient == null) { - try + ConnectToTcp(); + } + else + { + if (!_tcpClient.Connected) { - //_tcpClient.ReceiveTimeout = - _tcpClient.Connect(IPAddress.Parse(_ip), 8586); - Task.Run(new Action(ReceiveMessage));//寮�鍚嚎绋嬶紝涓嶅仠鎺ユ敹娑堟伅 - } - catch (Exception ex) - { - MainPage.Log($"tcp閲嶈繛寮傚父:{ex.Message}"); - _tcpClient.Close(); - _tcpClient = null; + try + { + //_tcpClient.ReceiveTimeout = + _tcpClient.Connect(IPAddress.Parse(_ip), 8586); + ReceiveMessage();//寮�鍚嚎绋嬶紝涓嶅仠鎺ユ敹娑堟伅 + isConnected = true; + } + catch (Exception ex) + { + MainPage.Log($"tcp閲嶈繛寮傚父:{ex.Message}"); + } } } + Thread.Sleep(1000); + + } - Thread.Sleep(1000); - - + }); + connectThread.Start(); + } + else + { + if (!isConnected) + { + try + { + connectThread?.Abort(); + } + catch { } + finally + { + connectThread = null; + } + Connect(); } - }); - connectThread.Start(); + } } } - + /// <summary> + /// 閲嶈繛 + /// </summary> + public void Reconect() + { + if (_tcpClient == null) + { + Connect(); + } + else + { + _tcpClient.Close(); + _tcpClient = null; + Connect(); + } + } /// <summary> /// 鍏抽棴杩炴帴 @@ -130,29 +224,81 @@ /// <param name="bytes">闇�瑕佸彂閫佺殑瀛楄妭</param> public void SendMessage(byte[] bytes) { - if (_tcpClient.GetStream().CanWrite) + if (heartBeatLogIdList.Count > 3) { - _tcpClient.GetStream().Write(bytes, 0, bytes.Length); + try + { + MainPage.Log("蹇冭烦澶氭鏈洖澶嶏紝鏂紑tcp杩炴帴"); + heartBeatLogIdList.Clear(); + isConnected = false; + Reconect(); + return; + }catch (Exception ex) + { + MainPage.Log($"閲嶈繛tcp寮傚父:{ex.Message}"); + } + } + try + { + if (_tcpClient.GetStream().CanWrite&& isConnected) + { + _tcpClient.GetStream().Write(bytes, 0, bytes.Length); + } + }catch(Exception ex) + { + MainPage.Log($"tcp瀹㈡埛绔彂閫佹暟鎹紓甯�:{ex.Message}"); + isConnected = false; } } /// <summary> /// 蹇冭烦鍖呯嚎绋� /// </summary> private Thread heartBeatThread; + private DateTime heartBeatTime; public void HeartBeat() { - if(heartBeatThread == null) + lock (lockObj) { - heartBeatThread = new Thread(() => { - if(_tcpClient.Connected&&10 *1000 <(System.DateTime.Now - heartBeatTime).TotalMilliseconds) + if (heartBeatThread == null) + { + MainPage.Log($"蹇冭烦鍖呯嚎绋嬪惎鍔�"); + heartBeatThread = new Thread(() => { - var sendBytes = Control.Ins.ConvertSendBodyData(CommunicationTopic.ct.HeartBeat, ""); - SendMessage(sendBytes); + while (isConnected) + { + if (_tcpClient.Connected && 10 * 1000 < (System.DateTime.Now - heartBeatTime).TotalMilliseconds) + { + string msgId = Control.Ins.msg_id.ToString(); + heartBeatLogIdList.Add(msgId); + var sendJob = new JObject { { "id", Control.Ins.msg_id.ToString() }, { "time_stamp", Utlis.GetTimestamp() } }; + var bodyString = JsonConvert.SerializeObject(sendJob); + + var sendBytes = Control.Ins.ConvertSendBodyData(CommunicationTopic.ct.HeartBeat, bodyString, false); + SendMessage(sendBytes); + heartBeatTime = DateTime.Now; + } + Thread.Sleep(100); + } + }); + heartBeatThread.Start(); + } + else + { + try + { + heartBeatThread?.Abort(); } - Thread.Sleep(100); - }); - heartBeatThread.Start(); + catch (Exception ex) + { + MainPage.Log($"鍚姩蹇冭烦绾跨▼锛岄噸鍚嚎绋嬪紓甯�:{ex.Message}"); + } + finally + { + heartBeatThread = null; + HeartBeat(); + } + } } } /// <summary> @@ -160,49 +306,84 @@ /// </summary> private Thread receiveThread; + private object lockObj = new object(); + //鎺ユ敹娑堟伅 public void ReceiveMessage() { - if(receiveThread == null) + lock (lockObj) { - receiveThread = new Thread(() => { - while (true) + if (receiveThread == null) + { + receiveThread = new Thread(() => { - if(_tcpClient == null) + while (isConnected) { - receiveThread.Abort(); - receiveThread = null; - return; - } - if (!_tcpClient.Connected) - { - MainPage.Log("tcp瀹㈡埛绔柇寮�浜嗚繛鎺�..."); - receiveThread.Abort(); - receiveThread = null; - isConnected = false; - return; + if (_tcpClient == null) + { + try + { + receiveThread?.Abort(); + } + catch { } + finally + { + receiveThread = null; + } + return; + } + if (!_tcpClient.Connected) + { + MainPage.Log("tcp瀹㈡埛绔柇寮�浜嗚繛鎺�..."); + isConnected = false; + return; + } + try + { + // 瀹氫箟涓�涓�2M鐨勭紦瀛樺尯锛� + byte[] arrMsgRec = new byte[1024 * 1024 * 2]; + try + { + int size = _tcpClient.GetStream().Read(arrMsgRec, 0, arrMsgRec.Length); + } + catch (Exception ex) + { + isConnected = false; + MainPage.Log($"灞�鍩熺綉tcp鏁版嵁鎺ユ敹寮傚父:{ex.Message}"); + return; + } + var tcpDataString = System.Text.Encoding.UTF8.GetString(arrMsgRec, 0, arrMsgRec.Length); + + + if (!string.IsNullOrEmpty(tcpDataString)) + { + MainPage.Log($"灞�鍩熺綉tcp鏁版嵁鎺ユ敹"); + Control.Ins.ConvertReceiveData(arrMsgRec, null); + + } + } + catch (Exception) { } } - // 瀹氫箟涓�涓�2M鐨勭紦瀛樺尯锛� - byte[] arrMsgRec = new byte[1024 * 1024 * 2]; - int size = _tcpClient.GetStream().Read(arrMsgRec, 0, arrMsgRec.Length); - var tcpDataString = System.Text.Encoding.UTF8.GetString(arrMsgRec, 0, arrMsgRec.Length); - - - if (!string.IsNullOrEmpty(tcpDataString)) - { - MainPage.Log($"灞�鍩熺綉tcp鏁版嵁鎺ユ敹"); - Control.Ins.ConvertReceiveData(arrMsgRec, null); - - } + }); + //receiveThread.IsBackground = true; + receiveThread.Start(); + } + else + { + try + { + receiveThread?.Abort(); } - - }); - //receiveThread.IsBackground = true; - receiveThread.Start(); + catch { } + finally + { + receiveThread = null; + ReceiveMessage(); + } + } } } - } } \ No newline at end of file diff --git a/HDL_ON/Entity/Function/Scene.cs b/HDL_ON/Entity/Function/Scene.cs index fadf04f..99d3a86 100644 --- a/HDL_ON/Entity/Function/Scene.cs +++ b/HDL_ON/Entity/Function/Scene.cs @@ -95,7 +95,7 @@ /// <summary> /// 浜戠oss瀛樺偍鍥剧墖鐨勮矾寰� /// </summary> - public string image = ""; + public string image = "Intelligence/Gallery/scenebg1.png"; ///// <summary> ///// 鍦烘櫙鑳屾櫙 @@ -119,10 +119,10 @@ } else { - var sceneImageInfo = OssSceneImages.Find((obj) => obj.defaultIconName == image); + var sceneImageInfo = OssSceneImages.Find((obj) => obj.defaultIconUrl == image); if (sceneImageInfo != null) { - return sceneImageInfo.defaultIconName; + return sceneImageInfo.localUrl; } return image; } @@ -152,51 +152,61 @@ new SceneImageInfo { defaultIconName = "scenebg1", - defaultIconUrl = "http://hdl-hz-prod.oss-cn-hangzhou.aliyuncs.com/20/2022/07/781c397f-611a-48a2-a3ed-2520ffb971bb.png" + defaultIconUrl = "http://hdl-hz-prod.oss-cn-hangzhou.aliyuncs.com/20/2022/07/781c397f-611a-48a2-a3ed-2520ffb971bb.png", + localUrl = "Intelligence/Gallery/scenebg1.png", }, new SceneImageInfo { defaultIconName = "scenebg2", + localUrl = "Intelligence/Gallery/scenebg2.png", defaultIconUrl = "http://hdl-hz-prod.oss-cn-hangzhou.aliyuncs.com/20/2022/07/be2a7c63-a6c0-427a-bb6d-f5c06f5b2f05.png" }, new SceneImageInfo { defaultIconName = "scenebg3", + localUrl = "Intelligence/Gallery/scenebg3.png", defaultIconUrl = "http://hdl-hz-prod.oss-cn-hangzhou.aliyuncs.com/20/2022/07/5d801aca-03fb-4ef3-88ec-75ade3aa1c94.png" }, new SceneImageInfo { defaultIconName = "scenebg4", + localUrl = "Intelligence/Gallery/scenebg4.png", defaultIconUrl = "http://hdl-hz-prod.oss-cn-hangzhou.aliyuncs.com/20/2022/07/a205306c-4fcd-4ea1-8e88-e84282dc0d54.png" }, new SceneImageInfo { defaultIconName = "scenebg5", + localUrl = "Intelligence/Gallery/scenebg5.png", defaultIconUrl = "http://hdl-hz-prod.oss-cn-hangzhou.aliyuncs.com/20/2022/07/93a0acdc-14be-4776-a9fd-e0fc6f13c909.png" }, new SceneImageInfo { defaultIconName = "scenebg6", + localUrl = "Intelligence/Gallery/scenebg6.png", defaultIconUrl = "http://hdl-hz-prod.oss-cn-hangzhou.aliyuncs.com/20/2022/07/45074923-2227-422a-be33-e37e6c3f9d23.png" }, new SceneImageInfo { defaultIconName = "scenebg7", + localUrl = "Intelligence/Gallery/scenebg7.png", defaultIconUrl = "http://hdl-hz-prod.oss-cn-hangzhou.aliyuncs.com/20/2022/07/28b3e459-041e-4ea1-9ff9-57053c5357f4.png" }, new SceneImageInfo { defaultIconName = "scenebg8", + localUrl = "Intelligence/Gallery/scenebg8.png", defaultIconUrl = "http://hdl-hz-prod.oss-cn-hangzhou.aliyuncs.com/20/2022/07/d470b979-cc06-4701-a2bd-7301856c9195.png" }, new SceneImageInfo { defaultIconName = "scenebg9", + localUrl = "Intelligence/Gallery/scenebg9.png", defaultIconUrl = "http://hdl-hz-prod.oss-cn-hangzhou.aliyuncs.com/20/2022/07/1a130d03-86b2-4174-b986-6f6c312a959f.png" }, new SceneImageInfo { defaultIconName = "scenebg10", + localUrl = "Intelligence/Gallery/scenebg10.png", defaultIconUrl = "http://hdl-hz-prod.oss-cn-hangzhou.aliyuncs.com/20/2022/07/54c1c7ab-9b63-4487-a77d-d5d3dadd9801.png" } }; @@ -862,6 +872,7 @@ { public string defaultIconName; public string defaultIconUrl; + public string localUrl; } diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs index 9dce5c5..9dce20e 100644 --- a/HDL_ON/Entity/FunctionList.cs +++ b/HDL_ON/Entity/FunctionList.cs @@ -24,7 +24,11 @@ var filePathList = FileUtlis.Files.ReadFiles(); foreach (var filePath in filePathList) { - _FunctionList.IniFunctionList(filePath); + try + { + _FunctionList.IniFunctionList(filePath); + } + catch { } } #endregion } diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs index b2766cd..c509f05 100644 --- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs +++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs @@ -170,10 +170,11 @@ TextColor = CSS_Color.FirstLevelTitleColor, TextSize = 50, IsBold = true, - Text = Convert.ToDouble(temp).ToString(), + Text = "28", TextAlignment = TextAlignment.Center, }; btnTemp.Width = btnTemp.GetTextWidth() + Application.GetRealWidth(5); + btnTemp.Text = Convert.ToDouble(temp).ToString(); FrameWhiteCentet1.AddChidren(btnTemp); @@ -959,7 +960,7 @@ device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString()); btnTemp.Text = arcBar.Progress.ToString(); controlTime = DateTime.Now; - System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); + Dictionary<string, string> d = new Dictionary<string, string>(); d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString()); Control.Ins.SendWriteCommand(device, d); }; -- Gitblit v1.8.0