using System; using System.Text; using HDL_ON.DAL.Net; using HDL_ON.Entity; using HDL_ON.UI; using Shared; using Shared.Net; namespace HDL_ON.DAL { public static class CommonPage { public static bool IsRemote; public static Action RefreshAir; public static string FindGatewayChilrenIPAddress = new NetWiFi ().BroadcastIpAddress.ToString (); private static string ip = "0.0.0.0"; public static System.Net.IPEndPoint EndPoint { get { try { return new System.Net.IPEndPoint(System.Net.IPAddress.Parse(new NetWiFi().BroadcastIpAddress.ToString()), 6000); } catch { //防止异常导致程序退出 return new System.Net.IPEndPoint(System.Net.IPAddress.Parse("127.0.0.1"), 6000); } } } ///保存设备备注才用gb2312,其他情况用utf8 public static Encoding MyEncodingUTF8 = Encoding.UTF8;//Get public static Encoding MyEncodingGB2312 { get { try { if (System.Globalization.CultureInfo.InstalledUICulture.EnglishName.ToUpper().StartsWith("CZECH")) { return Encoding.GetEncoding(1250); } else { return Encoding.GetEncoding("gb2312"); } } catch (Exception ex) { MainPage.Log("MyEncodingGB2312 Erorr : " + ex.Message); return Encoding.GetEncoding("gb2312"); } } } static bool isHttpListenerStart; public static DateTime dt; //public static byte currentSubnetID = 0; public static void InitHttpListener () { if (isHttpListenerStart) { return; } HttpListener.Start (new NetWiFi ().IpAddress, 6001); HttpListener.EventHandler -= httpListener_EventHandler; HttpListener.EventHandler += httpListener_EventHandler; isHttpListenerStart = true; } public static void CloseHttpListener () { //isHttpListenerStart = false; //return; if (!isHttpListenerStart) return; HttpListener.Close (); isHttpListenerStart = false; } /// /// 初始化处理socket接收的数据 /// public static void InitReceiveEvent () { Packet.ReceiveEvent += Packet_ReceiveEvent; } public static float floatChange (byte b1, byte b2, byte b3, byte b4) { byte[] byteTemp = { b4, b3, b2, b1 }; return BitConverter.ToSingle (byteTemp, 0); } static void Packet_ReceiveEvent(byte subnetID, byte deviceID, Command command, byte[] receiveBytes, string revGatewayIP) { try { switch (command) { case Command.SetSingleLightACK: foreach (var function in DB_ResidenceData.residenceData.functions) { if (function.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) { if (function.funcType == FunctionType.Light) { var light = function as Light; if (receiveBytes[2] == 0 && light.state == 0) { break; } if (receiveBytes[2] == 100 && light.state == 1) { break; } if (function.bus_DeviceType == "Relay") { var relay = function as Light; relay.state = receiveBytes[2] == 0 ? 0 : 1; HomePage.UpdataLightView(relay); } else if (function.bus_DeviceType == "Dimmer") { var dimmer = function as Dimmer; dimmer.state = receiveBytes[2] == 0 ? 0 : 1; dimmer.brightness = receiveBytes[1]; if (receiveBytes[2] > 0) dimmer.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%"; HomePage.UpdataLightView(dimmer); } } } } break; } } catch (Exception ex) { MainPage.Log($"Bus Rev Erorr : {ex.Message}"); } } /// /// byte 变字符串 /// /// The to hex16. /// The blue component. public static string byteToHex16 (byte b) { string s = Convert.ToString (b, 16).ToUpper (); if (s.Length <= 1) { return "0" + s; } return s;// } static void httpListener_EventHandler (System.Collections.Specialized.NameValueCollection nameValueCollection, System.IO.Stream outputStream, System.IO.Stream inputStream) { try { if (nameValueCollection ["Command"] != null && nameValueCollection ["Command"].StartsWith ("Get")) { string tempFileName = nameValueCollection ["Command"].Replace ("Get", ""); if ("AllFiles" == tempFileName) { byte [] bytes = System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (FileUtils.ReadFiles ())); outputStream.Write (bytes, 0, bytes.Length); outputStream.Flush (); } else { byte [] bytes; if (!FileUtils.Exists (tempFileName)) { bytes = System.Text.Encoding.UTF8.GetBytes ("文件名不存在!"); outputStream.Write (bytes, 0, bytes.Length); outputStream.Flush (); return; } System.IO.FileStream fs = new System.IO.FileStream (Application.RootPath + tempFileName, System.IO.FileMode.Open); bytes = new byte [fs.Length]; fs.Read (bytes, 0, bytes.Length); fs.Close (); outputStream.Write (bytes, 0, bytes.Length); outputStream.Flush (); } } else if (nameValueCollection ["Command"].StartsWith ("Upload")) { string path = Application.RootPath + nameValueCollection ["Command"].Replace ("Upload", ""); string dePath = nameValueCollection ["Command"].Replace ("Upload", ""); } else { byte [] bytes = System.Text.Encoding.UTF8.GetBytes ("请求命令无效!"); outputStream.Write (bytes, 0, bytes.Length); outputStream.Flush (); } } catch (Exception ex) { MainPage.Log ("httpListener_EventHandler" + ex.ToString ()); } } /// /// 监听请求的Http端口 /// public static int Port = 5555; static void httpListener_EventHandler (string rawUrl, System.IO.Stream outputStream, System.IO.Stream inputStream) { foreach (var musicInfo in MusicInfo.MusicInfoList) { if ("audio-item-" + musicInfo.ID == rawUrl.TrimStart ('/')) { var file = new System.IO.FileStream (musicInfo.Data, System.IO.FileMode.Open, System.IO.FileAccess.Read); byte [] bytes = new byte [1024]; try { while (file.CanRead) { int len = file.Read (bytes, 0, bytes.Length); if (len == 0) { break; } outputStream.Write (bytes, 0, len); } } catch { } file.Close (); break; } } } } }