From 393825c701ad97e13ad71c1fac1f6914e3d0feba Mon Sep 17 00:00:00 2001 From: wei <kaede@kaededeMacBook-Air.local> Date: 星期五, 27 十一月 2020 13:35:37 +0800 Subject: [PATCH] 20201127 接受bus数据修改完成,搜索网关、一端口修改完成 --- HDL_ON/DAL/DriverLayer/Control.cs | 80 +++++++++++++++++++++++++++------------ 1 files changed, 55 insertions(+), 25 deletions(-) diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs index 131f154..7f51627 100644 --- a/HDL_ON/DAL/DriverLayer/Control.cs +++ b/HDL_ON/DAL/DriverLayer/Control.cs @@ -35,6 +35,18 @@ return _control; } } + int _msg_id = 1; + /// <summary> + /// 閫氳ID + /// </summary> + public int msg_id + { + get + { + return _msg_id++; + } + } + bool _gatewayOnline = false; /// <summary> /// 缃戝叧鏄惁鍦ㄧ嚎 @@ -123,10 +135,6 @@ /// </summary> public void SearchLoaclGateway() { - -#if DEBUG - DB_ResidenceData.residenceData.GatewayType = 1; -#endif OpenUdp(DB_ResidenceData.residenceData.GatewayType == 0 ? 6000 : 8585); if (DB_ResidenceData.residenceData.GatewayType == 0) @@ -235,11 +243,11 @@ /// </summary> public byte[] ConvertSendBodyData(string topic, string bodyDataString) { - string topicString = "Topic:" + topic + "/\r\n"; + string topicString = "Topic:" + topic + "\r\n"; byte[] bodyBytes = Encoding.ASCII.GetBytes(bodyDataString); - string lenghtString = "Length:" + bodyBytes.Length.ToString() + "\r\n" + "\r\n"; + string lengthString = "Length:" + bodyBytes.Length.ToString() + "\r\n" + "\r\n"; - string sendDataString = topicString + lenghtString + bodyDataString; + string sendDataString = topicString + lengthString + bodyDataString; byte[] sendDataBytes = Encoding.ASCII.GetBytes(sendDataString); return sendDataBytes; @@ -248,16 +256,20 @@ /// 杞崲鎺ユ敹鍒扮殑鏁版嵁 /// </summary> /// <returns></returns> - public string ConvertReceiveData(byte[] bytes) + public void ConvertReceiveData(byte[] receiveBytes) { - string receiveString = ""; + var reString = Encoding.UTF8.GetString(receiveBytes); + AnalysisReceiveData(reString); + } + /// <summary> + /// 杞崲鎺ユ敹鍒扮殑鏁版嵁 + /// </summary> + /// <returns></returns> + public LocalCommunicationData AnalysisReceiveData(string receiveString) + { + LocalCommunicationData receiveObj = new LocalCommunicationData(); - string topic = ""; - int lenght = 0; - - var reString = Encoding.UTF8.GetString(bytes); - var res = reString.Split("\r\n\r\n"); - + var res = receiveString.Split("\r\n\r\n"); if (res.Length == 2) { @@ -269,28 +281,46 @@ switch (key[0]) { case "Topic": - topic = key[1]; + receiveObj.Topic = key[1]; break; - case "Lenght": - lenght = Convert.ToInt32(key[1]); + case "Length": + receiveObj.Length = Convert.ToInt32(key[1]); break; } } - switch (topic) + //楠岃瘉鏈夋晥鏁版嵁闀垮害 + if (res[1].Length != receiveObj.Length) + { + MainPage.Log($"鏀跺埌鏁版嵁鍖呴暱搴︿笉澶�"); + return receiveObj; + } + receiveObj.BodyDataString = res[1]; + + var bodyJObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]); + if (bodyJObj == null) + { + return receiveObj; + } + switch (receiveObj.Topic) { case CommunicationTopic.SearchLoaclGateway: - var jt = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]); - if (jt != null) + var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString()); +#if DEBUG + if (UserInfo.Current.AccountString == "464027401@qq.com") { - var device = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.DeviceModule>(jt.objects.ToString()); - //Newtonsoft.Json.Linq.JObject.FromObject(jt.objects); + DB_ResidenceData.residenceData.residenceGatewayMAC = "0000000000000000"; + } +#endif + if (device.device_mac == DB_ResidenceData.residenceData.residenceGatewayMAC) + { + Control.Ins.GatewayOnline = true; } break; } - } - return receiveString; + return receiveObj; + } -- Gitblit v1.8.0