| | |
| | | |
| | | public static bool IsRemote; |
| | | public static Action RefreshAir; |
| | | public static string FindGatewayChilrenIPAddress = new NetWiFi ().BroadcastIpAddress.ToString (); |
| | | public static string FindGatewayChilrenIPAddress = new NetWiFi().BroadcastIpAddress.ToString(); |
| | | private static string ip = "0.0.0.0"; |
| | | public static System.Net.IPEndPoint EndPoint { |
| | | public static System.Net.IPEndPoint EndPoint |
| | | { |
| | | get |
| | | { |
| | | try |
| | |
| | | |
| | | ///保存设备备注才用gb2312,其他情况用utf8 |
| | | public static Encoding MyEncodingUTF8 = Encoding.UTF8;//Get |
| | | public static Encoding MyEncodingGB2312 { |
| | | public static Encoding MyEncodingGB2312 |
| | | { |
| | | get |
| | | { |
| | | try |
| | |
| | | public static DateTime dt; |
| | | |
| | | //public static byte currentSubnetID = 0; |
| | | public static void InitHttpListener () |
| | | public static void InitHttpListener() |
| | | { |
| | | if (isHttpListenerStart) { |
| | | if (isHttpListenerStart) |
| | | { |
| | | return; |
| | | } |
| | | HttpListener.Start (new NetWiFi ().IpAddress, 6001); |
| | | HttpListener.Start(new NetWiFi().IpAddress, 6001); |
| | | HttpListener.EventHandler -= httpListener_EventHandler; |
| | | HttpListener.EventHandler += httpListener_EventHandler; |
| | | isHttpListenerStart = true; |
| | | } |
| | | public static void CloseHttpListener () |
| | | public static void CloseHttpListener() |
| | | { |
| | | //isHttpListenerStart = false; |
| | | //return; |
| | | if (!isHttpListenerStart) |
| | | return; |
| | | HttpListener.Close (); |
| | | HttpListener.Close(); |
| | | isHttpListenerStart = false; |
| | | } |
| | | /// <summary> |
| | | /// 初始化处理socket接收的数据 |
| | | /// </summary> |
| | | public static void InitReceiveEvent () |
| | | public static void InitReceiveEvent() |
| | | { |
| | | Packet.ReceiveEvent += Packet_ReceiveEvent; |
| | | } |
| | | |
| | | public static float floatChange (byte b1, byte b2, byte b3, byte b4) |
| | | public static float floatChange(byte b1, byte b2, byte b3, byte b4) |
| | | { |
| | | byte[] byteTemp = { b4, b3, b2, b1 }; |
| | | return BitConverter.ToSingle (byteTemp, 0); |
| | | return BitConverter.ToSingle(byteTemp, 0); |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | case Command.ReadLightSingleLoopBrightnessACK: |
| | | case Command.SetSingleLightACK: |
| | | foreach (var function in DB_ResidenceData.residenceData.functions.lights) |
| | | foreach (var function in DB_ResidenceData.residenceData.functionList.lights) |
| | | { |
| | | if (function.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) |
| | | { |
| | |
| | | var relay = function as Light; |
| | | relay.state = receiveBytes[2] == 0 ? 0 : 1; |
| | | HomePage.UpdataLightView(relay); |
| | | //RoomPage. |
| | | } |
| | | else if (function.functionType == "brightness") |
| | | { |
| | |
| | | break; |
| | | } |
| | | } |
| | | catch (Exception ex) { |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"Bus Rev Erorr : {ex.Message}"); |
| | | } |
| | | } |
| | |
| | | /// </summary> |
| | | /// <returns>The to hex16.</returns> |
| | | /// <param name="b">The blue component.</param> |
| | | public static string byteToHex16 (byte b) |
| | | public static string byteToHex16(byte b) |
| | | { |
| | | string s = Convert.ToString (b, 16).ToUpper (); |
| | | if (s.Length <= 1) { |
| | | 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) |
| | | 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 (); |
| | | 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 (); |
| | | 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 ()); |
| | | 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端口 |
| | | /// </summary> |
| | | public static int Port = 5555; |
| | | static void httpListener_EventHandler (string rawUrl, System.IO.Stream outputStream, System.IO.Stream inputStream) |
| | | 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) { |
| | | 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); |
| | | outputStream.Write(bytes, 0, len); |
| | | } |
| | | } catch { } |
| | | file.Close (); |
| | | } |
| | | catch { } |
| | | file.Close(); |
| | | break; |
| | | } |
| | | } |