xm
2020-07-21 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d
ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs
@@ -94,8 +94,8 @@
            //房间图片
            var btnPic = new ImageView();
            btnPic.Y = Application.GetRealHeight(60);
            btnPic.Width = Application.GetMinRealAverage(824);
            btnPic.Height = Application.GetMinRealAverage(549);
            btnPic.Width = this.GetPictrueRealSize(824);
            btnPic.Height = this.GetPictrueRealSize(549);
            btnPic.Radius = (uint)Application.GetRealHeight(17);
            btnPic.Gravity = Gravity.CenterHorizontal;
            if (this.editorRoom.BackgroundImageType == 0)
@@ -195,8 +195,8 @@
            var btnTemper = rowTemperature.AddMostRightView(Language.StringByID(R.MyInternationalizationString.uNothing), 300);
            //底线
            rowTemperature.AddBottomLine();
            //分享的房间不能修改
            if (this.editorRoom.IsSharedRoom == false)
            //分享的房间不能修改 或者当前住宅不是虚拟的
            if (this.editorRoom.IsSharedRoom == false && Common.Config.Instance.Home.IsVirtually == false)
            {
                rowTemperature.ButtonClickEvent += (sender, e) =>
                {
@@ -219,8 +219,8 @@
            var btnHumi = rowHumidity.AddMostRightView(Language.StringByID(R.MyInternationalizationString.uNothing), 300);
            //底线
            rowHumidity.AddBottomLine();
            //分享的房间不能修改
            if (this.editorRoom.IsSharedRoom == false)
            //分享的房间不能修改 或者当前住宅不是虚拟的
            if (this.editorRoom.IsSharedRoom == false && Common.Config.Instance.Home.IsVirtually == false)
            {
                rowHumidity.ButtonClickEvent += (sender, e) =>
                {
@@ -306,13 +306,17 @@
                if (changedFloor == false)
                {
                    //刷新左滑的房间列表界面的指定房间的信息
                    MainPage.ListRoomViewFrom.Instance.RefreshRoomInfo(this.editorRoom);
                    MainPage.LeftListRoomViewFrom.Instance.RefreshRoomInfo(this.editorRoom);
                }
                else
                {
                    //刷新左滑的房间列表界面的房间列表信息
                    MainPage.ListRoomViewFrom.Instance.RefreshListRoom();
                    MainPage.LeftListRoomViewFrom.Instance.RefreshListRoom();
                }
                //算了,这里如果按下保存,则主页需要重新刷新
                UserView.UserPage.Instance.RefreshAllForm = true;
                this.CloseForm();
            };
        }
@@ -371,6 +375,11 @@
                {
                    listDevice.Add(device);
                }
                //PM2.5是温度和湿度合在同一个端点
                else if (device.Type == ZigBee.Device.DeviceType.PMSensor)
                {
                    listDevice.Add(device);
                }
            }
            var listSelect = new List<string>() { cloneRoom.TemperatrueDevice };
            var form = new SelectDeviceForm();
@@ -420,41 +429,22 @@
                {
                    return;
                }
                foreach (var data in report.DeviceStatusReport.AttriBute)
                var localDevice = Common.LocalDevice.Current.GetDevice(mainKeys);
                HdlThreadLogic.Current.RunMain(() =>
                {
                    if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                    if (((ZigBee.Device.TemperatureSensor)localDevice).Temperatrue == 0)
                    {
                        HdlThreadLogic.Current.RunMain(() =>
                        {
                            if (data.AttriButeData == 0)
                            {
                                //0℃
                                btnTemper.Text = "0.0℃";
                                this.cloneRoom.Temperatrue = 0;
                            }
                            else if (data.AttriButeData > 32767)
                            {
                                //负数(特殊处理)
                                string strValue = (data.AttriButeData - 65536).ToString();
                                //小数点需要一位
                                strValue = strValue.Substring(0, strValue.Length - 1);
                                //记录温度
                                this.cloneRoom.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
                                btnTemper.Text = this.cloneRoom.Temperatrue.ToString() + "℃";
                            }
                            else
                            {
                                //小数点需要一位
                                string strValue = data.AttriButeData.ToString();
                                strValue = strValue.Substring(0, strValue.Length - 1);
                                //记录温度
                                this.cloneRoom.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
                                btnTemper.Text = this.cloneRoom.Temperatrue.ToString() + "℃";
                            }
                        });
                        //0℃
                        btnTemper.Text = "0.0℃";
                        this.cloneRoom.Temperatrue = 0;
                    }
                }
                    else
                    {
                        //记录温度
                        this.cloneRoom.Temperatrue = ((ZigBee.Device.TemperatureSensor)localDevice).Temperatrue;
                        btnTemper.Text = this.cloneRoom.Temperatrue.ToString() + "℃";
                    }
                }, ShowErrorMode.NO);
            }));
            //发送获取温度的命令
            ((ZigBee.Device.TemperatureSensor)device).ReadTemperatureOrHumidity();
@@ -475,6 +465,16 @@
            {
                //获取湿度传感器
                if (device is ZigBee.Device.TemperatureSensor && ((ZigBee.Device.TemperatureSensor)device).SensorDiv == 2)
                {
                    listDevice.Add(device);
                }
                //新风
                else if (device.Type == ZigBee.Device.DeviceType.FreshAirHumiditySensor)
                {
                    listDevice.Add(device);
                }
                //PM2.5是温度和湿度合在同一个端点
                else if (device.Type == ZigBee.Device.DeviceType.PMSensor)
                {
                    listDevice.Add(device);
                }
@@ -527,33 +527,26 @@
                {
                    return;
                }
                foreach (var data in report.DeviceStatusReport.AttriBute)
                var localDevice = Common.LocalDevice.Current.GetDevice(mainKeys);
                HdlThreadLogic.Current.RunMain(() =>
                {
                    if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                    decimal humidity = (decimal)localDevice.GetType().InvokeMember("Humidity", System.Reflection.BindingFlags.GetField, null, localDevice, null);
                    if (humidity == 0)
                    {
                        HdlThreadLogic.Current.RunMain(() =>
                        {
                            if (data.AttriButeData == 0)
                            {
                                //0
                                btnHumi.Text = "0.0%";
                                this.cloneRoom.Humidity = 0;
                            }
                            else
                            {
                                //小数点需要一位(湿度没有负数)
                                string strValue = data.AttriButeData.ToString();
                                strValue = strValue.Substring(0, strValue.Length - 1);
                                //记录湿度
                                this.cloneRoom.Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
                                btnHumi.Text = this.cloneRoom.Humidity.ToString() + "%";
                            }
                        });
                        //0
                        btnHumi.Text = "0.0%";
                        this.cloneRoom.Humidity = 0;
                    }
                }
                    else
                    {
                        //记录湿度
                        this.cloneRoom.Humidity = humidity;
                        btnHumi.Text = this.cloneRoom.Humidity.ToString() + "%";
                    }
                }, ShowErrorMode.NO);
            });
            //发送获取湿度的命令
            ((ZigBee.Device.TemperatureSensor)device).ReadTemperatureOrHumidity();
            device.GetType().InvokeMember("ReadTemperatureOrHumidity", System.Reflection.BindingFlags.InvokeMethod, null, device, null);
        }
        #endregion