From 944b87b6bcccb095cd73f13f4410fb20faf48f74 Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期三, 25 十二月 2019 11:21:06 +0800 Subject: [PATCH] 2019.12.25 --- ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs | 138 ++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 126 insertions(+), 12 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs index 2d8fdcb..ebede4c 100644 --- a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs +++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs @@ -1,5 +1,6 @@ 锘縰sing System; using Shared.Common; +using Shared.Phone.UserCenter; using Shared.Phone.UserView; namespace Shared.Phone.Device.CommonForm @@ -15,6 +16,19 @@ /// </summary> public Action action; + FrameLayout roomNameBackground; + + FrameLayout roomTemperatureBackground; + + Button roomListBtn; + + public override void RemoveFromParent() + { + HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice"); + HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"); + base.RemoveFromParent(); + } + /// <summary> /// RoomView /// </summary> @@ -24,8 +38,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> @@ -50,7 +64,7 @@ }; roomBackView.AddChidren(roomImg); - var roomNameBackground = new FrameLayout + roomNameBackground = new FrameLayout { X = Application.GetRealWidth(29), Y = Application.GetRealHeight(282), @@ -71,11 +85,11 @@ roomNameBackground.AddChidren(roomName); - var roomTemperatureBackground = new FrameLayout + roomTemperatureBackground = new FrameLayout { X = Application.GetRealWidth(29), Y = Application.GetRealHeight(374), - Width = Application.GetRealWidth(340), + Width = Application.GetRealWidth(400), Height = Application.GetRealHeight(80), BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor2 }; @@ -95,16 +109,16 @@ var temperatureText = new Button { X = Application.GetRealWidth(69), - Width = Application.GetRealWidth(86), + Width = Application.GetRealWidth(120), Height = Application.GetRealHeight(58), Gravity = Gravity.CenterVertical, - Text = "26鈩�" + Text = $"{room.Temperatrue}鈩�" }; roomTemperatureBackground.AddChidren(temperatureText); var humidityIcon = new Button { - X = Application.GetRealWidth(179), + X = Application.GetRealWidth(200), Width = Application.GetMinRealAverage(58), Height = Application.GetMinRealAverage(58), Gravity = Gravity.CenterVertical, @@ -114,16 +128,109 @@ var humidityText = new Button { - X = Application.GetRealWidth(236), - Width = Application.GetRealWidth(86), + X = Application.GetRealWidth(260), + Width = Application.GetRealWidth(120), Height = Application.GetRealHeight(58), Gravity = Gravity.CenterVertical, - Text = "13%" + Text = $"{room.Humidity}%" }; roomTemperatureBackground.AddChidren(humidityText); - var roomListBtn = new Button() + 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鈩�"; + room.Temperatrue = 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, ".") + "鈩�"; + room.Temperatrue = int.Parse(strValue) * 0.1; + } + else + { + //灏忔暟鐐归渶瑕佷竴浣� + string strValue = data.AttriButeData.ToString(); + strValue = strValue.Substring(0, strValue.Length - 1); + temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�"; + room.Temperatrue = int.Parse(strValue) * 0.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%"; + room.Humidity = 0; + } + else + { + //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟) + string strValue = data.AttriButeData.ToString(); + strValue = strValue.Substring(0, strValue.Length - 1); + humidityText.Text = strValue.Insert(strValue.Length - 1, ".") + "%"; + room.Humidity = int.Parse(strValue) * 0.1; + } + } + } + }); + //鍙戦�佽幏鍙栨箍搴︾殑鍛戒护 + var dev = Common.LocalDevice.Current.GetDevice(room.HumidityDevice); + if (dev != null) + { + (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity(); + } + } + + + roomListBtn = new Button() { X = roomBackView.Width - Application.GetRealWidth(100 + 20), Y = Application.GetRealHeight(20), @@ -145,7 +252,14 @@ action?.Invoke(); }; }; + } + /// <summary> + /// HideName + /// </summary> + public void HideName(bool statu) + { + roomNameBackground.Visible = roomTemperatureBackground.Visible = roomListBtn.Visible = !statu; } } } -- Gitblit v1.8.0