1
wxr
2022-12-30 9ebd6edb9beddf1a6881b2ca924ed43bf5cedfbe
SmartHome/UI/SimpleControl/CommonPage.cs
@@ -10,13 +10,8 @@
{
    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";
@@ -81,63 +76,55 @@
            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,4599,4601,4602,
            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)
        static void Packet_ReceiveEvent (byte subnetID, byte deviceID, Command command, byte [] usefullBytes,int deviceTypeNumber, System.Net.IPEndPoint remoteIp)
        {
            try {
                List<byte> ButtonBkeyModelList = new List<byte> ();
                switch (command) {
                case Command.ReadRemarkACK:
                    if(supportList.Contains(deviceTypeNumber)) {
                        lock (GateWayList) {
                            if (GateWayList.Find ((l) => { return l.SubnetID == subnetID && l.DeviceID == deviceID; }) != null) {
                                return;
                        //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}");
                            }
                            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.Add (gatewayBase);
                        }
                    }
                    break;
                //读取网关设备回复
                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;
@@ -187,5 +174,10 @@
        /// </summary>
        public static List<GatewayBase> GateWayList = new List<GatewayBase> ();
        public static List<GatewayBase> GateWayList_NewServer = new List<GatewayBase> ();
    }
}