gxc
2019-12-13 eb424d24e39bab4a245725f35deab3f234ea0f13
ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs
@@ -1,5 +1,6 @@
using System;
using Shared.Common;
using Shared.Phone.UserCenter;
using Shared.Phone.UserView;
namespace Shared.Phone.Device.CommonForm
@@ -15,6 +16,13 @@
        /// </summary>
        public Action action;
        public override void RemoveFromParent()
        {
            HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
            HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
            base.RemoveFromParent();
        }
        /// <summary>
        /// RoomView
        /// </summary>
@@ -24,8 +32,8 @@
        {
            X = Application.GetRealWidth(x);
            Y = Application.GetRealHeight(y);
            Width = Application.GetRealWidth(487);
            Height = Application.GetRealHeight(348);
            Width = Application.GetRealWidth(717);
            Height = Application.GetRealHeight(478);
        }
        /// <summary>
@@ -95,7 +103,7 @@
            var temperatureText = new Button
            {
                X = Application.GetRealWidth(69),
                Width = Application.GetRealWidth(86),
                Width = Application.GetRealWidth(100),
                Height = Application.GetRealHeight(58),
                Gravity = Gravity.CenterVertical,
                Text = "26℃"
@@ -123,6 +131,93 @@
            roomTemperatureBackground.AddChidren(humidityText);
            if (string.IsNullOrEmpty(room.TemperatrueDevice) == false)
            {
                HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
                HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A设备属性上报, (Action<ZigBee.Device.CommonDevice>)((report) =>
                {
                    string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
                    if (room.TemperatrueDevice != mainKeys)
                    {
                        return;
                    }
                    //移除掉事件
                    HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
                    foreach (var data in report.DeviceStatusReport.AttriBute)
                    {
                        if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                        {
                            if (data.AttriButeData == 0)
                            {
                                //0℃
                                temperatureText.Text = "0.0℃";
                            }
                            else if (data.AttriButeData > 32767)
                            {
                                //负数(特殊处理)
                                string strValue = (data.AttriButeData - 65536).ToString();
                                //小数点需要一位
                                strValue = strValue.Substring(0, strValue.Length - 1);
                                temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "℃";
                            }
                            else
                            {
                                //小数点需要一位
                                string strValue = data.AttriButeData.ToString();
                                strValue = strValue.Substring(0, strValue.Length - 1);
                                temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "℃";
                            }
                        }
                    }
                }));
                //发送获取温度的命令
                var dev = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice);
                if (dev != null)
                {
                    (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
                }
            }
            if (string.IsNullOrEmpty(room.HumidityDevice) == false)
            {
                HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
                HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice",  ReceiveComandDiv.A设备属性上报, (report) =>
                {
                    string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
                    if (room.HumidityDevice != mainKeys)
                    {
                        return;
                    }
                    //移除掉事件
                    HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
                    foreach (var data in report.DeviceStatusReport.AttriBute)
                    {
                        if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                        {
                            if (data.AttriButeData == 0)
                            {
                                //0
                                humidityText.Text = "0.0%";
                            }
                            else
                            {
                                //小数点需要一位(湿度没有负数)
                                string strValue = data.AttriButeData.ToString();
                                strValue = strValue.Substring(0, strValue.Length - 1);
                                humidityText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
                            }
                        }
                    }
                });
                //发送获取湿度的命令
                var dev = Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
                if (dev != null)
                {
                    (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
                }
            }
            var roomListBtn = new Button()
            {
                X = roomBackView.Width - Application.GetRealWidth(100 + 20),