HDL Home App 第二版本 旧平台金堂用 正在使用
hxb
2022-08-30 25429f085093d89d543a0b90e30d0d62d1b7dac9
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/MiniGatewaySearchForm.cs
@@ -54,16 +54,28 @@
            //清空bodyFrame
            this.ClearBodyFrame();
            //网关如果正常连接路由器{0}系统指示灯会1秒闪烁
            string[] ArryMsg = Language.StringByID(R.MyInternationalizationString.uAddApWirelessGatewayMsg4).Split(new string[] { "{0}" }, StringSplitOptions.RemoveEmptyEntries);
            int yy = Application.GetRealHeight(1066);
            //手机连接网关
            var btnTitle = new NormalViewControl(400, 60, true);
            btnTitle.TextID = R.MyInternationalizationString.uMobileConnectionGateway;
            btnTitle.X = Application.GetRealWidth(75);
            btnTitle.Y = Application.GetRealHeight(939);
            btnTitle.IsBold = true;
            btnTitle.TextSize = 14;
            bodyFrameLayout.AddChidren(btnTitle);
            //1.app若显示连接的网关设备,表明连接成功
            //2.请前往添加其他设备
            //3.若长时间无法连接成功,请前往“查看帮助”
            string[] ArryMsg = Language.StringByID(R.MyInternationalizationString.uAddMiniGatewayMsg4).Split(new string[] { "{0}" }, StringSplitOptions.RemoveEmptyEntries);
            int yy = btnTitle.Bottom + Application.GetRealHeight(23);
            foreach (var msg in ArryMsg)
            {
                var btnMsg = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(60), false);
                btnMsg.Text = msg;
                btnMsg.Y = yy;
                btnMsg.TextAlignment = TextAlignment.Center;
                btnMsg.X = btnTitle.X;
                btnMsg.TextColor = UserCenterColor.Current.TextGrayColor1;
                btnMsg.TextSize = 12;
                bodyFrameLayout.AddChidren(btnMsg);
                yy = btnMsg.Bottom;
            }
@@ -72,6 +84,14 @@
            this.InitConcetionAnimete();
            //开启网关检测的线程
            this.StartCheckGatewayThread();
            //查看帮助
            var btnHelp = this.AddHelpControl();
            btnHelp.ButtonClickEvent += (sender, e) =>
            {
                var form = new AddGatewayHelpForm();
                form.AddForm("Mini");
            };
        }
        /// <summary>
@@ -84,25 +104,25 @@
            //图标
            var picGwImage = new FrameLayout();
            picGwImage.Width = this.GetPictrueRealSize(857);
            picGwImage.Height = this.GetPictrueRealSize(239);
            picGwImage.Y = Application.GetRealWidth(236);
            picGwImage.Width = this.GetPictrueRealSize(848);
            picGwImage.Height = this.GetPictrueRealSize(475);
            picGwImage.Y = Application.GetRealHeight(199);
            picGwImage.Gravity = Gravity.CenterHorizontal;
            picGwImage.BackgroundImagePath = "Gateway/MiniGatewaySearching.png";
            picGwImage.BackgroundImagePath = "Gateway/WirelessGatewaySearching.png";
            bodyFrameLayout.AddChidren(picGwImage);
            var btnFailIcon = new PicViewControl(66, 66);
            btnFailIcon.UnSelectedImagePath = "Item/FailIcon.png";
            btnFailIcon.Gravity = Gravity.CenterHorizontal;
            btnFailIcon.Y = this.GetPictrueRealSize(110);
            btnFailIcon.Y = this.GetPictrueRealSize(200);
            picGwImage.AddChidren(btnFailIcon);
            //搜索失败
            var btnFailView = new NormalViewControl(300, 60, true);
            btnFailView.TextAlignment = TextAlignment.Center;
            btnFailView.Y = picGwImage.Bottom - Application.GetRealHeight(15);
            btnFailView.Y = btnFailIcon.Bottom + Application.GetRealHeight(58);
            btnFailView.Gravity = Gravity.CenterHorizontal;
            btnFailView.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnFailView.TextID = R.MyInternationalizationString.uSearchFail;
            bodyFrameLayout.AddChidren(btnFailView);
            picGwImage.AddChidren(btnFailView);
            //解决方法,可选择执行以下任意一种方式:
            var btnMsg1 = new NormalViewControl(930, 60, true);
@@ -198,23 +218,23 @@
        {
            //图标
            var btnGwImage = new FrameLayout();
            btnGwImage.Width = this.GetPictrueRealSize(857);
            btnGwImage.Height = this.GetPictrueRealSize(239);
            btnGwImage.Y = Application.GetRealHeight(360);
            btnGwImage.Width = this.GetPictrueRealSize(848);
            btnGwImage.Height = this.GetPictrueRealSize(475);
            btnGwImage.Y = Application.GetRealHeight(199);
            btnGwImage.Gravity = Gravity.CenterHorizontal;
            btnGwImage.BackgroundImagePath = "Gateway/MiniGatewaySearching.png";
            btnGwImage.BackgroundImagePath = "Gateway/WirelessGatewaySearching.png";
            bodyFrameLayout.AddChidren(btnGwImage);
            //正在搜索网关…
            var btnMsg = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(60), false);
            btnMsg.TextID = R.MyInternationalizationString.uGatewaySearching;
            btnMsg.Y = Application.GetRealHeight(821);
            btnMsg.Y = btnGwImage.Bottom + Application.GetRealHeight(150);
            btnMsg.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnMsg.TextAlignment = TextAlignment.Center;
            bodyFrameLayout.AddChidren(btnMsg);
            //首格的X轴
            int firstPoint = this.GetPictrueRealSize(275);
            int firstPoint = this.GetPictrueRealSize(280);
            //一格的宽度
            int width = this.GetPictrueRealSize(22);
            //间距大小
@@ -231,7 +251,7 @@
            var btnRound = new PicViewControl(width, width, false);
            btnRound.Radius = (uint)width / 2;
            btnRound.BackgroundColor = UserCenterColor.Current.ConcetionRoundColor;
            btnRound.Y = this.GetPictrueRealSize(132);
            btnRound.Y = this.GetPictrueRealSize(225);
            btnRound.X = listPoint[0];
            btnGwImage.AddChidren(btnRound);
@@ -239,7 +259,7 @@
            HdlThreadLogic.Current.RunThread(() =>
            {
                //清空全部列表
                HdlGatewayLogic.Current.ClearAllRealGateway();
                HdlGatewayLogic.Current.ClearAllRealGatewayConection(true);
                ZigBee.Common.Application.IsSearchingGateway = true;
                int index = 1;
@@ -253,7 +273,7 @@
                    if (timeCount == 10)
                    {
                        //5秒后清空网关列表
                        HdlGatewayLogic.Current.ClearAllRealGateway();
                        HdlGatewayLogic.Current.ClearAllRealGatewayConection(true);
                        ZigBee.Common.Application.IsSearchingGateway = true;
                    }
                    if (timeCount % 2 == 0)
@@ -266,7 +286,7 @@
                        break;
                    }
                    Application.RunOnMainThread(() =>
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        btnRound.X = listPoint[index];
                        index++;
@@ -276,14 +296,15 @@
                        }
                        //正在搜索网关…XXs
                        btnMsg.Text = strMsg + timeOut + "s";
                    });
                    }, ShowErrorMode.NO);
                    System.Threading.Thread.Sleep(500);
                }
                //搜索结束
                this.isGatewaySearching = false;
                if (timeOut <= 0)
                //2020.07.14追加:倒计时结束时,哪怕是已经绑定了的网关,也显示出来
                if (timeOut <= 0 && listZbGateway.Count == 0)
                {
                    HdlThreadLogic.Current.RunMain(() =>
                    {
@@ -291,7 +312,7 @@
                        this.InitFailMiddleFrame();
                    });
                }
                else if (newGatewayGetting == true)
                else if (newGatewayGetting == true || listZbGateway.Count > 0)
                {
                    HdlThreadLogic.Current.RunMain(() =>
                    {
@@ -315,7 +336,9 @@
        private void StartCheckGatewayThread()
        {
            this.isGatewaySearching = true;
            HdlThreadLogic.Current.RunThread(async () =>
            this.dicZbGatewayDiv = new Dictionary<string, int>();
            HdlThreadLogic.Current.RunThread(() =>
            {
                int count = 0;
                while (this.Parent != null && this.isGatewaySearching == true)
@@ -330,7 +353,7 @@
                    }
                    count = 0;
                    await this.CheckZbGatewayAndSetRow();
                    this.CheckZbGatewayAndSetRow();
                    if (this.newGatewayGetting == true)
                    {
@@ -344,36 +367,53 @@
        /// <summary>
        /// 检测搜索到的网关
        /// </summary>
        private async Task<bool> CheckZbGatewayAndSetRow()
        private bool CheckZbGatewayAndSetRow()
        {
            for (int i = 0; i < ZbGateway.GateWayList.Count; i++)
            {
                var way = ZbGateway.GateWayList[i];
                var wayId = way.GwId;
                if (dicZbGatewayDiv.ContainsKey(wayId) == true)
                {
                    //已经处理了
                    continue;
                }
                //2020.09.18 本地连接没有连接上,则不处理
                if (way.localIsConnected == false)
                {
                    string strMsg = "搜索到了网关,但是本地链接不上  ID:" + way.GwId + " IP:" + way.GwIP + " 名称:" + way.GwName;
                    HdlLogLogic.Current.WriteLog(-1, strMsg);
                    continue;
                }
                //网关绑定模式
                GatewayBindMode mode = GatewayBindMode.BindAgain;
                //如果是第一次绑定,或者是以前已经绑定过了的
                if (HdlGatewayLogic.Current.HomeIdIsEmpty(way) == true
                    || way.HomeId == Common.Config.Instance.HomeId)
                var mode = GatewayBindMode.BindAgain;
                //住宅ID为空 第一次绑定
                if (HdlGatewayLogic.Current.HomeIdIsEmpty(way) == true)
                {
                    if (way.HomeId != Common.Config.Instance.HomeId)
                    {
                        //第一次绑定,也就是网关住宅ID为空
                        mode = GatewayBindMode.First;
                    }
                    else
                    {
                        //已经绑定过了
                        mode = GatewayBindMode.Binded;
                    }
                    mode = GatewayBindMode.First;
                }
                //住宅ID不相等 需要重新绑定
                else if (way.HomeId != Common.Config.Instance.HomeId)
                {
                    mode = GatewayBindMode.BindAgain;
                }
                //如果本地不存在的话,当做第一次绑定处理
                else if (HdlGatewayLogic.Current.IsGatewayExist(way) == false)
                {
                    mode = GatewayBindMode.First;
                }
                //住宅ID一样,则是已经绑定过了
                else
                {
                    mode = GatewayBindMode.Binded;
                }
                //这两种情况都是需要重新添加(已经绑定过了的,有可能住宅ID没写进去,它有可能是人为的清空住宅ID)
                if (mode == GatewayBindMode.First || mode == GatewayBindMode.Binded)
                {
                    //添加搜索到的网关到缓存(执行网关保存操作)
                    var result = await HdlGatewayLogic.Current.AddNewGateway(way, ShowErrorMode.NO);
                    var result = HdlGatewayLogic.Current.AddNewGateway(way, ShowErrorMode.NO, WriteLogMode.YES);
                    if (result == false)
                    {
                        continue;
@@ -403,10 +443,15 @@
                    this.newGatewayGetting = true;
                }
                if (mode == GatewayBindMode.First|| mode == GatewayBindMode.Binded)
                if (mode == GatewayBindMode.First || mode == GatewayBindMode.Binded)
                {
                    //我觉得这里需要获取一下新网关的设备列表
                    Common.LocalDevice.Current.SetDeviceToMemmoryByGateway(way);
                    Common.LocalDevice.Current.SetDeviceToMemmoryByGateway(way.GwId, true);
                    if (way.IsMainGateWay == true)
                    {
                        //如果它是主网关,则刷新场景列表
                        HdlSceneLogic.Current.RefreshSceneUIList(true);
                    }
                }
            }
            return true;