| | |
| | | return _control; |
| | | } |
| | | } |
| | | int _msg_id = 1; |
| | | /// <summary> |
| | | /// 通讯ID |
| | | /// </summary> |
| | | public int msg_id |
| | | { |
| | | get |
| | | { |
| | | return _msg_id++; |
| | | } |
| | | } |
| | | |
| | | bool _gatewayOnline = false; |
| | | /// <summary> |
| | | /// 网关是否在线 |
| | |
| | | /// </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) |
| | |
| | | /// </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; |
| | |
| | | /// 转换接收到的数据 |
| | | /// </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) |
| | | { |
| | |
| | | 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; |
| | | |
| | | } |
| | | |
| | | |