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 bool IsRemote = false; public static string FindGatewayChilrenIPAddress = new Net.NetWiFi ().BroadcastIpAddress.ToString (); 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); //} 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 List supportList = new List () { 228, 229,230,4618, 231, 232, 233, 234, 235, 236, 237, 238 ,740,741,742,743,744,745,746,750,752,754, 755,756,757,761,758,759,760,762,894, 4602,4604 ,4613, 4622,4605,4606,4607,4609, 4611,4620,4621,4615,4617,4619,4612, 36865,9600,19600, 1099,1163,3501,3502,3503,3504,3505,3506, 3508,3509,3516,3517,3521,3527,3528,3530,3532,3533,3534,3536,3538, 3539,3541,3543,3550,3559,3600,3601,3605,4601,4602, 30001,63479,65282,65532,65534, }; static void Packet_ReceiveEvent (byte subnetID, byte deviceID, Command command, byte [] usefullBytes,int deviceTypeNumber, System.Net.IPEndPoint remoteIp) { try { List ButtonBkeyModelList = new List (); switch (command) { case Command.ReadRemarkACK: if(supportList.Contains(deviceTypeNumber)) { //if (IsRemote) { // if (remoteIp.ToString().Contains("118.31.3.103") || remoteIp.ToString ().Contains ("157.175.231.123")) // lock (GateWayList_NewServer) { // if (GateWayList_NewServer.Find ((l) => { return l.SubnetID == subnetID && l.DeviceID == deviceID; }) != null) { // return; // } // DeviceType deviceType = (DeviceType)(usefullBytes [2] * 256 + usefullBytes [3]); // GatewayBase gatewayBase = new GatewayBase (); // gatewayBase.DeviceTypeNumber = deviceTypeNumber; // gatewayBase.SubnetID = subnetID; // gatewayBase.DeviceID = deviceID; // gatewayBase.Type = deviceType; // gatewayBase.Name = MyEncodingGB2312.GetString (usefullBytes, 0, 20).Trim ('\0');//============= // GateWayList_NewServer.Add (gatewayBase); // Console.WriteLine ($"name:{gatewayBase.Name}++{deviceTypeNumber}"); // } //} else { lock (GateWayList) { if (GateWayList.Find ((l) => { return l.SubnetID == subnetID && l.DeviceID == deviceID; }) != null) { return; } DeviceType deviceType = (DeviceType)(usefullBytes [2] * 256 + usefullBytes [3]); GatewayBase gatewayBase = new GatewayBase (); gatewayBase.DeviceTypeNumber = deviceTypeNumber; gatewayBase.SubnetID = subnetID; gatewayBase.DeviceID = deviceID; gatewayBase.Type = deviceType; gatewayBase.Name = MyEncodingGB2312.GetString (usefullBytes, 0, 20).Trim ('\0');//============= var name = Encoding.Default.GetString (usefullBytes, 0, 20).Trim ('\0'); GateWayList.Add (gatewayBase); Console.WriteLine ($"name:{gatewayBase.Name}++{deviceTypeNumber}"); } } } 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 (); public static List GateWayList_NewServer = new List (); } }