HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2020-12-31 fe3b2466c68b5db70d38e78039703add3b8b1dfe
ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
@@ -18,7 +18,7 @@
        /// <summary>
        /// 是否正在搜索网关
        /// </summary>
        public static bool IsSearchingGateway = false;
        public static bool IsSearchingGateway = false;
        /// <summary>
        /// 发送的时间间隔(单位:秒)
        /// </summary>
@@ -115,7 +115,7 @@
                            //局域网能够广播得到网关
                            ZbGateway.IsRemote = false;
                            //当网关的连接方式改变时,记录当前的连接方式
                            Shared.Phone.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.GatewayConnectMode.WIFI);
                            Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.WIFI);
                        }
                        else
                        {
@@ -129,7 +129,7 @@
                            //局域网广播不到网关
                            ZbGateway.IsRemote = true;
                            //当网关的连接方式改变时,记录当前的连接方式
                            Shared.Phone.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.GatewayConnectMode.Remote);
                            Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.Remote);
                        }
                    }
                    catch { }
@@ -159,7 +159,7 @@
                            System.Threading.Thread.Sleep(500);
                            continue;
                        }
                        var ipEndPoint = new System.Net.IPEndPoint(0, 0);
                        var ipEndPoint = new System.Net.IPEndPoint(IPAddress.Any, 0);
                        var bytes = FindGateWaySocket.udpClient.Receive(ref ipEndPoint);
                        if (bytes.Length > 43 && bytes[43] == 0xA2)
                        {
@@ -200,7 +200,7 @@
                                    listReceiveIP.Add(ipAddress);
                                }
                                //2020.08.07追加:即使空的住宅id也建立链接,对应手动恢复网关出厂设置时,因为没有解绑,但是住宅id为空的问题
                                else if (Shared.Phone.HdlGatewayLogic.Current.HomeIdIsEmpty(homeID) == true)
                                else if (Shared.Phone.UserCenter.HdlGatewayLogic.Current.HomeIdIsEmpty(homeID) == true)
                                {
                                    listReceiveIP.Add(ipAddress);
                                }
@@ -210,17 +210,17 @@
                            if (gateWay == null)
                            {
                                //刷新网关的在线时间点
                                Shared.Phone.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(zbGateWay.GwId);
                                Shared.Phone.UserCenter.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(zbGateWay.GwId);
                                ZbGateway.GateWayList.Add(zbGateWay);
                                await zbGateWay.StartLocalMqtt(ipAddress);
                            }
                            else
                            {
                                gateWay.IsVirtual = false;
                            {
                                //刷新网关的在线时间点
                                Shared.Phone.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(gateWay.GwId);
                                Shared.Phone.UserCenter.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(gateWay.GwId);
                                gateWay.IsVirtual = false;
                                if (gateWay.GwIP != ipAddress)
                                {
                                    await gateWay.DisConnectLocalMqttClient("2");
@@ -255,23 +255,23 @@
                            }
                            //测试能否广播得到网关,通常情况下不检测
                            if (Shared.Phone.HdlUserCenterResourse.HideOption.CheckCanReceiveGateway == 1)
                            if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.CheckCanReceiveGateway == 1)
                            {
                                if (Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest == null)
                                if (Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest == null)
                                {
                                    //防止异常,虽然几率很低
                                    Shared.Phone.HdlUserCenterResourse.HideOption.CheckCanReceiveGateway = 0;
                                    Shared.Phone.UserCenter.UserCenterResourse.HideOption.CheckCanReceiveGateway = 0;
                                    continue;
                                }
                                if (Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest.ContainsKey(id) == false)
                                if (Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest.ContainsKey(id) == false)
                                {
                                    if (gateWay == null)
                                    {
                                        Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest[id] = zbGateWay;
                                        Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest[id] = zbGateWay;
                                    }
                                    else
                                    {
                                        Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest[id] = gateWay;
                                        Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest[id] = gateWay;
                                    }
                                }
                            }
@@ -279,20 +279,20 @@
                        else
                        {
                            //调试用
                            if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                            if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                            {
                                var data33 = Encoding.UTF8.GetString(bytes).Replace("�)", string.Empty).TrimStart('\0').TrimEnd('\0');
                                Shared.Phone.HdlLogLogic.Current.WriteLog(3, data33);
                                Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, data33);
                            }
                        }
                        }
                        await System.Threading.Tasks.Task.Delay(20);
                    }
                    catch (Exception ex)
                    {
                        //调试用
                        if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                        if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                        {
                            Shared.Phone.HdlLogLogic.Current.WriteLog(3, "Receive异常\r\n" + ex.Message);
                            Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "Receive异常\r\n" + ex.Message);
                        }
                    }
                }
@@ -417,8 +417,13 @@
                }
                //获取手机的wifi地址
#if Android
                var netwifi = new Shared.Net.NetWiFi();
                string phoneIp = netwifi.GetIPAddress();
#endif
#if iOS
                string phoneIp = Shared.Net.NetWiFi.GetIPAddress();
#endif
                //"127.0.0.1"是底层库里面设置的初始默认值
                if (phoneIp != "127.0.0.1")
                {
@@ -448,32 +453,32 @@
            /// 异步发送数据
            /// </summary>
            /// <param name="tempPacket"></param>
            public static void BeginSend(IPEndPoint iPEndPoint, byte[] bytes)
            public static void BeginSend(System.Net.IPEndPoint iPEndPoint, byte[] bytes)
            {
                try
                {
                    if (Start() == false)
                    {
                        //调试用
                        if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                        if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                        {
                            Shared.Phone.HdlLogLogic.Current.WriteLog(3, "udp New不起来");
                            Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "udp New不起来");
                        }
                        return;
                    }
                    int value = udpClient.Send(bytes, bytes.Length, iPEndPoint);
                    //调试用
                    if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                    if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                    {
                        Shared.Phone.HdlLogLogic.Current.WriteLog(3, "发送长度(BeginSendTo):" + value + "  发送内容:" + System.Text.Encoding.UTF8.GetString(bytes));
                        Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "发送长度(BeginSendTo):" + value + "  发送内容:" + System.Text.Encoding.UTF8.GetString(bytes));
                    }
                }
                catch (Exception ex)
                {
                    //调试用
                    if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                    if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                    {
                        Shared.Phone.HdlLogLogic.Current.WriteLog(3, "发送异常(BeginSendTo)\r\n" + ex.Message);
                        Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "发送异常(BeginSendTo)\r\n" + ex.Message);
                    }
                }
            }