From ed3bfb7462d44747230437717e8673a5192f833f Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期一, 30 十一月 2020 20:34:51 +0800 Subject: [PATCH] 2020-11-30-2 --- HDL_ON/DriverLayer/Control_TcpServer.cs | 140 ++++++++++++++++++++++++++++++---------------- 1 files changed, 91 insertions(+), 49 deletions(-) diff --git a/HDL_ON/DAL/DriverLayer/Control_TcpServer.cs b/HDL_ON/DriverLayer/Control_TcpServer.cs similarity index 65% rename from HDL_ON/DAL/DriverLayer/Control_TcpServer.cs rename to HDL_ON/DriverLayer/Control_TcpServer.cs index eb77a42..2208fde 100644 --- a/HDL_ON/DAL/DriverLayer/Control_TcpServer.cs +++ b/HDL_ON/DriverLayer/Control_TcpServer.cs @@ -171,59 +171,101 @@ Thread.Sleep(100); } } + string tcpFunctionOidJsonString = ""; /// <summary> /// 鑾峰彇鍒楄〃鏁版嵁鍥炶皟鏂规硶 /// </summary> public Action<string> GetListResponseAction; - string tcpFunctionOidJsonString = ""; /// <summary> /// 澶勭悊tcp鏁版嵁 /// </summary> - void AnalysisTcpData(Socket socket, string tcpBodyDataString) + void AnalysisTcpData(Socket socket, string tcpDataString) { - MainPage.Log($"0001 tcpDataString:\r\n {tcpBodyDataString}"); - var tcpDataObj = Control.Ins.AnalysisReceiveData(tcpBodyDataString); - if (tcpDataObj.BodyDataString == null) + MainPage.Log($"tcpDataString: {tcpDataString}"); + var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(tcpDataString); + if (obj == null) { return; } - switch (tcpDataObj.Topic) - { - case CommunicationTopic.AddDeviceOids: - tcpFunctionOidJsonString = tcpDataObj.BodyDataString; - break; - case CommunicationTopic.AddFunctions: - var addSidFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<TcpTransmissionSidsObj>(tcpDataObj.BodyDataString); - Application.RunOnMainThread(() => - { - var tipDialog = new UI.UpdataSidDataDialog(); - var tcpLocalFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Function>>(Newtonsoft.Json.JsonConvert.SerializeObject(addSidFunction.objects)); - tipDialog.ShowDialog(tcpLocalFunction, tcpFunctionOidJsonString); - }); - break; - case CommunicationTopic.BusPcGetAppOids: + var tcpCommand = obj.GetValue("command").ToString(); + var tcpType = obj.GetValue("type").ToString(); - var bytes = FileUtils.ReadFile(DB_ResidenceData.OidSavePathName); - if (bytes.Length > 0) + switch (tcpCommand) + { + //鑾峰彇鏁版嵁杩斿洖 + case "get_list_response": + GetListResponseAction?.Invoke(tcpDataString); + break; + /* + case "search":// 閫傜敤浜庢悳绱� + case "read":// 鐢ㄤ簬渚濇璇诲彇鐩稿叧绫诲瀷淇℃伅鐘舵�� + case "set_list":// 淇敼鍒楄〃 + case "write":// 鐢ㄤ簬渚濇鎺у埗鐩稿叧绫诲瀷淇℃伅 + case "delete":// 鐢ㄤ簬鍒犻櫎鐩稿叧鎿嶄綔 + case "initialize":// 鍒濆鍖� + case "find":// 璁惧瀹氫綅 + case "get":// 鐢ㄤ簬鑾峰彇sid褰撳墠鐘舵�� + case "set":// 鐢ㄤ簬鎺у埗sid鐩稿叧鍙傛暟 + */ + case "add":// 鐢ㄤ簬澧炲姞鍔熻兘 + switch (tcpType) { - socket.Send(bytes); - MainPage.Log($"send oid list to 8586 prot :{ System.Text.Encoding.UTF8.GetString(bytes)}"); + case "device_oid":// 鐢ㄤ簬鍘熺敓鎬佽澶囪鍐欑浉鍏虫搷浣� + tcpFunctionOidJsonString = tcpDataString; + break; + case "device_sid": + var addSidFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<TcpTransmissionObject>(tcpDataString); + Application.RunOnMainThread(() => + { + var tipDialog = new UI.UpdataTcpResidenceDataDialog(); + var tcpLocalFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Function>>(Newtonsoft.Json.JsonConvert.SerializeObject(addSidFunction.objects)); + tipDialog.ShowDialog(tcpLocalFunction, tcpFunctionOidJsonString); + }); + break; } break; - case CommunicationTopic.BusPcGetAppSids: - var sendSidObj = new TcpTransmissionSidsObj(); - sendSidObj.id = Control.Ins.msg_id.ToString(); - sendSidObj.time_stamp = ""; - //杞崲鎴恇us闇�瑕佺殑鏁版嵁鏍煎紡 - var localFunction = DB_ResidenceData.functionList.GetAllFunction(); - var localFunctionString = Newtonsoft.Json.JsonConvert.SerializeObject(localFunction); - var tcpFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<List<BusSidObj>>(localFunctionString); + case "get_list"://鑾峰彇鍒楄〃 + switch (tcpType) + { + /* + case "space":// 閫傜敤浜庡叏閮ㄨ澶�, 鑾峰彇绌洪棿淇℃伅 + case "device":// 缃戝叧鎴栬�呭叾浠朅璁惧 + case "device_mac":// 鐢ㄤ簬璁惧鏈鸿韩鍙风爜鐩稿叧鎿嶄綔 + case "scene":// 鐢ㄤ簬鍦烘櫙鍔熻兘璇诲啓 + case "security":// 鐢ㄤ簬瀹夐槻鍔熻兘璇诲啓 + case "remote":// 鐢ㄤ簬杩滅▼淇℃伅璇诲啓鎿嶄綔 + case "logic":// 鐢ㄤ簬閫昏緫鑷姩鍖栬鍐欐搷浣� + case "global":// 鐢ㄤ簬缁勬挱鎼滅储A璁惧 + */ + case "device_oid":// 鐢ㄤ簬鍘熺敓鎬佽澶囪鍐欑浉鍏虫搷浣� + var bytes = FileUtils.ReadFile("AProtocolData_FunctionOid"); + //var jsonString = System.Text.Encoding.UTF8.GetString(bytes); + //if (!string.IsNullOrEmpty(jsonString)) + if (bytes.Length > 0) + { + socket.Send(bytes); + MainPage.Log($"send oid list to 8586 prot :{ System.Text.Encoding.UTF8.GetString(bytes)}"); + } + break; + case "device_sid":// 鐢ㄤ簬鍔熻兘妯″瀷璇诲啓鎿嶄綔 + var sendSidObj = new TcpTransmissionObject(); + sendSidObj.from_oid = ""; + sendSidObj.to_oid = ""; + sendSidObj.time_stamp = ""; + sendSidObj.type = "device_sid"; + sendSidObj.command = "get_list_response"; + //杞崲鎴恇us闇�瑕佺殑鏁版嵁鏍煎紡 + var localFunction = DB_ResidenceData.functionList.GetAllFunction(); + var localFunctionString = Newtonsoft.Json.JsonConvert.SerializeObject(localFunction); + var tcpFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<List<TcpObject>>(localFunctionString); - sendSidObj.objects.AddRange(tcpFunction); - var sendSidJson = Newtonsoft.Json.JsonConvert.SerializeObject(sendSidObj); - var sendSidBytes = System.Text.Encoding.UTF8.GetBytes(sendSidJson); - socket.Send(sendSidBytes, sendSidBytes.Length, SocketFlags.OutOfBand); - MainPage.Log($"send sid list to 8586 prot :{sendSidJson}"); + sendSidObj.objects.AddRange(tcpFunction); + var sendSidJson = Newtonsoft.Json.JsonConvert.SerializeObject(sendSidObj); + var sendSidBytes = System.Text.Encoding.UTF8.GetBytes(sendSidJson); + socket.Send(sendSidBytes, sendSidBytes.Length, SocketFlags.OutOfBand); + MainPage.Log($"send sid list to 8586 prot :{sendSidJson}"); + break; + } break; } } @@ -320,15 +362,17 @@ } /// <summary> - /// bus杞欢浼犺緭鍔熻兘鐨剆id鍒楄〃瀵硅薄 + /// bus杞欢浼犺緭鍔熻兘鐨勫璞� /// </summary> - public class TcpTransmissionSidsObj + public class TcpTransmissionObject { - public List<BusSidObj> objects = new List<BusSidObj>(); + public List<TcpObject> objects = new List<TcpObject>(); - public string id = ""; + public string from_oid = ""; + public string to_oid = ""; public string time_stamp = ""; - + public string type = ""; + public string command = ""; } /// <summary> @@ -337,23 +381,21 @@ /// Function瀵硅薄鍖呭惈浜嗚瀵硅薄鐨勬墍鏈夊唴瀹癸紝 /// 姝ゅ璞′负浜嗗噺灏戜紶杈撴暟鎹娇鐢� /// </summary> - public class BusSidObj + public class TcpObject { public string sid = "";// "0301011234567801012301230123"; /// <summary> - /// A鍗忚鍔熻兘鐨勫睘鎬� - /// 濡傦細鏄疉C鍔熻兘锛氬睘鎬э細on_off,mode,fan,temperature + /// A鍗忚鍔熻兘鐨勭壒鎬� + /// 濡傦細鏄疉C鍔熻兘锛氱壒鎬э細on_off,mode,fan,temperature + /// attri /// </summary> - public List<FunctionAttributes> attributes = new List<FunctionAttributes>(); + public List<Trait> function = new List<Trait>(); /// <summary> /// 澶囨敞 /// </summary> public string name; - - public string omodel; - } } \ No newline at end of file -- Gitblit v1.8.0