using System; using Shared.Net; using Shared.IO; using System.Text; using System.Collections.Generic; using Shared.SimpleControl.Phone; //using service.hdlcontrol.com_WebServiceAirQuality; namespace Shared.SimpleControl { public static class CommonPage { //public static AirQuality AirQuality; //public static Action RefreshAir; public static bool IsRemote = false; public static bool FindGateway = false; public static bool FindGatewayChilren = false; public static string FindGatewayChilrenIPAddress = new Net.NetWiFi ().BroadcastIpAddress.ToString (); public static bool LocalPhoneFindDevice = false; public static int searchTotal = 0; public static int newDevice = 0; private static string ip= "115.29.251.24"; public static System.Net.IPEndPoint EndPoint { get { try { if (IsRemote) { //127.0.0.1 if (ip == "0.0.0.0") { try { ip = "115.29.251.24"; } catch { } } return new System.Net.IPEndPoint (System.Net.IPAddress.Parse (ip), 9999); } else { if (FindGateway) { return new System.Net.IPEndPoint (System.Net.IPAddress.Parse ("224.0.168.188"), 6000); } else if (FindGatewayChilren) { try { return new System.Net.IPEndPoint (System.Net.IPAddress.Parse (FindGatewayChilrenIPAddress), 6000); } catch { return new System.Net.IPEndPoint (System.Net.IPAddress.Parse ("224.0.168.188"), 6000); } } else { return new System.Net.IPEndPoint (System.Net.IPAddress.Parse (new Net.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 = Encoding.GetEncoding ("gb2312"); static bool isHttpListenerStart; public static DateTime dt; /// /// 初始化处理socket接收的数据 /// public static void InitReceiveEvent () { Packet.ReceiveEvent += Packet_ReceiveEvent; } static float floatChange(byte b1, byte b2, byte b3, byte b4) { byte [] byteTemp = new byte [4] { b4,b3,b2,b1 }; return BitConverter.ToSingle (byteTemp, 0); } static object lockobj = new object (); static void Packet_ReceiveEvent (byte subnetID, byte deviceID, Command command, byte [] usefullBytes,int deviceTypeNumber) { try { List ButtonBkeyModelList = new List (); switch (command) { //读取网关设备回复 case Command.ReadGatewayACK: if (usefullBytes [0] != RandomHigh | usefullBytes [1] != RandomLow) { return; } lock (GateWayList) { if (GateWayList.Find ((l) => { return l.SubnetID == subnetID && l.DeviceID == deviceID; }) != null) { return; } DeviceType deviceType = (DeviceType)(usefullBytes [2] * 256 + usefullBytes [3]); if (usefullBytes [2] == 254 && usefullBytes [3] < 8) { GatewayBase gatewayBase = new GatewayBase (); gatewayBase.DeviceTypeNumber = deviceTypeNumber; gatewayBase.SubnetID = subnetID; gatewayBase.DeviceID = deviceID; gatewayBase.Type = deviceType; gatewayBase.LoopID = usefullBytes [4]; gatewayBase.MAC = byteToHex16 (usefullBytes [5]) + "." + byteToHex16 (usefullBytes [6]) + "." + byteToHex16 (usefullBytes [7]) + "." + byteToHex16 (usefullBytes [8]) + "." + byteToHex16 (usefullBytes [9]) + "." + byteToHex16 (usefullBytes [10]) + "." + byteToHex16 (usefullBytes [11]) + "." + byteToHex16 (usefullBytes [12]); gatewayBase.Name = MyEncodingGB2312.GetString (usefullBytes, 13, 20).Trim ('\0');//============= gatewayBase.IPAddress = usefullBytes [33] + "." + usefullBytes [34] + "." + usefullBytes [35] + "." + usefullBytes [36]; gatewayBase.RouteIPAddress = usefullBytes [37] + "." + usefullBytes [38] + "." + usefullBytes [39] + "." + usefullBytes [40]; gatewayBase.IPMAC = usefullBytes [41] + "." + usefullBytes [42] + "." + usefullBytes [43] + "." + usefullBytes [44] + "." + usefullBytes [45] + "." + usefullBytes [46]; gatewayBase.SubnetMask = usefullBytes [47] + "." + usefullBytes [48] + "." + usefullBytes [49] + "." + usefullBytes [50]; gatewayBase.DHCP = usefullBytes [51] == 0 ? false : true; GateWayList.Add (gatewayBase); if (gatewayBase.Name == "") { gatewayBase.Name = gatewayBase.CommonLoopID.ToString (); } } } break; case Command.WriteWirelessPanelButtonKey: //01 01 59(+30) 02 0D 03 64 00 01 break; case Command.AssignedAddressACK: Console.WriteLine (usefullBytes [0].ToString ()); if (usefullBytes [0] == 3) { dt = DateTime.Now; } else if (usefullBytes [0] == 4) { dt = System.DateTime.MinValue; } break; case Command.Remote3thACK: Console.WriteLine (usefullBytes [0]); break; } } catch (Exception ex) { Console.WriteLine ("Packet_ReceiveEvent:" + ex.ToString ()); } } /// /// 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;// } /// /// 随机数高位 /// public static byte RandomHigh; /// /// 随机数低位 /// public static byte RandomLow; /// /// 网关设备列表 /// public static List GateWayList = new List (); } }