using System; using System.Collections.Generic; using Shared.Common; using Shared.Phone.UserCenter; using ZigBee.Device; namespace Shared.Phone.MainPage.ControlForm { /// /// PM2.5传感器类型的深度卡片界面 /// public class DevicePmSensorDetailCardForm : DeviceDetailCardCommonForm { #region ■ 变量声明___________________________ /// /// 界面上可以操作的控件 /// private List listControl = new List(); /// /// 界面上可以操作的控件 /// private List listFrameLayout = new List(); /// /// 控件 /// private PMSensor pMSensor = null; /// /// 状态控件 /// private NormalViewControl btnStatu = null; /// /// 当前的文本 /// private string CurrentText = string.Empty; /// /// 设备名称控件 /// private NormalViewControl btnDeviceName = null; #endregion #region ■ 初始化_____________________________ public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack) { //左滑不能 this.ScrollEnabled = true; this.pMSensor = (PMSensor)this.device; //先清空 this.listControl = new List(); InitPmControl(frameWhiteBack); UpdateStatus(); } /// /// 初始化PM2.5传感器控件 /// /// private void InitPmControl(FrameLayout frameWhiteBack) { //湿度容器 var frameHumidityPic = new FrameLayout(); frameHumidityPic.X = Application.GetMinRealAverage(138); frameHumidityPic.Y = Application.GetRealHeight(242); frameHumidityPic.Width = Application.GetMinRealAverage(311); frameHumidityPic.Height = Application.GetMinRealAverage(351); frameHumidityPic.BackgroundImagePath = "PM2.5Sensor/HumidityPic.png"; frameWhiteBack.AddChidren(frameHumidityPic); //湿度文本 var btnHumidityText = new NormalViewControl(311, 49, true); btnHumidityText.Y = Application.GetRealHeight(45); btnHumidityText.TextID = R.MyInternationalizationString.Humidity; btnHumidityText.TextSize = 12; btnHumidityText.TextColor = ZigbeeColor.Current.XMWhite; btnHumidityText.TextAlignment = TextAlignment.Center; frameHumidityPic.AddChidren(btnHumidityText); //湿度文本容器 var frameHumidityTextFrameLayout = new FrameLayout(); frameHumidityTextFrameLayout.Gravity = Gravity.CenterHorizontal; frameHumidityTextFrameLayout.Y = Application.GetRealHeight(113); frameHumidityTextFrameLayout.Height = Application.GetRealHeight(160); frameHumidityPic.AddChidren(frameHumidityTextFrameLayout); //湿度数据 var btnHumidityStatus = new NormalViewControl(193, 160, true); btnHumidityStatus.Text = "20"; btnHumidityStatus.TextSize = 30; btnHumidityStatus.TextColor = ZigbeeColor.Current.XMWhite; btnHumidityStatus.TextAlignment = TextAlignment.BottomRight; frameHumidityTextFrameLayout.AddChidren(btnHumidityStatus); //湿度单位 var btnHumidityUnit = new NormalViewControl(50, 140, true); btnHumidityUnit.X = btnHumidityStatus.Right; btnHumidityUnit.Text = "%"; btnHumidityUnit.TextSize = 14; btnHumidityUnit.TextColor = ZigbeeColor.Current.XMWhite; btnHumidityUnit.TextAlignment = TextAlignment.BottomLeft; frameHumidityTextFrameLayout.AddChidren(btnHumidityUnit); //温度容器 var frameTemperaturePic = new FrameLayout(); frameTemperaturePic.X = Application.GetMinRealAverage(518); frameTemperaturePic.Y = Application.GetRealHeight(242); frameTemperaturePic.Width = Application.GetMinRealAverage(311); frameTemperaturePic.Height = Application.GetMinRealAverage(351); frameTemperaturePic.BackgroundImagePath = "PM2.5Sensor/TemperaturePic.png"; frameWhiteBack.AddChidren(frameTemperaturePic); //温度文本 var btnTemperatureText = new NormalViewControl(311, 49, true); btnTemperatureText.Y = Application.GetRealHeight(45); btnTemperatureText.TextID = R.MyInternationalizationString.Temperature; btnTemperatureText.TextSize = 12; btnTemperatureText.TextColor = ZigbeeColor.Current.XMWhite; btnTemperatureText.TextAlignment = TextAlignment.Center; frameTemperaturePic.AddChidren(btnTemperatureText); // 温度文本容器 var frameTemperatureTextFrameLayout = new FrameLayout(); frameTemperatureTextFrameLayout.Gravity = Gravity.CenterHorizontal; frameTemperatureTextFrameLayout.Y = Application.GetRealHeight(113); frameTemperatureTextFrameLayout.Height = Application.GetRealHeight(160); frameTemperaturePic.AddChidren(frameTemperatureTextFrameLayout); //温度数据 var btnTemperatureStatus = new NormalViewControl(193, 160, true); btnTemperatureStatus.Text = "20"; btnTemperatureStatus.TextSize = 30; btnTemperatureStatus.TextColor = ZigbeeColor.Current.XMWhite; btnTemperatureStatus.TextAlignment = TextAlignment.BottomRight; frameTemperatureTextFrameLayout.AddChidren(btnTemperatureStatus); //温度单位 var btnTemperatureUnit = new NormalViewControl(50, 140, true); btnTemperatureUnit.X = btnTemperatureStatus.Right; btnTemperatureUnit.Text = "℃"; btnTemperatureUnit.TextSize = 14; btnTemperatureUnit.TextColor = ZigbeeColor.Current.XMWhite; btnTemperatureUnit.TextAlignment = TextAlignment.BottomLeft; frameTemperatureTextFrameLayout.AddChidren(btnTemperatureUnit); //PM2.5传感器的PM2.5容器 var framePmPic = new FrameLayout(); framePmPic.X = Application.GetMinRealAverage(138); framePmPic.Y = Application.GetRealHeight(662); framePmPic.Width = Application.GetMinRealAverage(311); framePmPic.Height = Application.GetMinRealAverage(351); framePmPic.BackgroundImagePath = "PM2.5Sensor/PmPic.png"; frameWhiteBack.AddChidren(framePmPic); //PM2.5文本 var btnPmText = new NormalViewControl(311, 49, true); btnPmText.Y = Application.GetRealHeight(45); btnPmText.Text = "PM2.5"; btnPmText.TextSize = 12; btnPmText.TextColor = ZigbeeColor.Current.XMWhite; btnPmText.TextAlignment = TextAlignment.Center; framePmPic.AddChidren(btnPmText); // PM2.5文本容器 var framePmTextFrameLayout = new FrameLayout(); framePmTextFrameLayout.Y = Application.GetRealHeight(113); framePmTextFrameLayout.Gravity = Gravity.CenterHorizontal; framePmTextFrameLayout.Height = Application.GetRealHeight(160); framePmPic.AddChidren(framePmTextFrameLayout); //PM2.5数据 var btnPmStatus = new NormalViewControl(162, 160, true); btnPmStatus.Text = "155"; btnPmStatus.TextSize = 30; btnPmStatus.TextColor = ZigbeeColor.Current.XMWhite; btnPmStatus.TextAlignment = TextAlignment.BottomRight; framePmTextFrameLayout.AddChidren(btnPmStatus); //PM2.5单位 (第4个,listControl【3】) var btnPmUnit = new NormalViewControl(144, 148, true); btnPmUnit.X = btnPmStatus.Right; btnPmUnit.Text = "μg/m³"; btnPmUnit.TextSize = 14; btnPmUnit.TextColor = ZigbeeColor.Current.XMWhite; btnPmUnit.TextAlignment = TextAlignment.BottomLeft; framePmTextFrameLayout.AddChidren(btnPmUnit); this.listControl.Add(btnHumidityStatus);//(第1个,listControl【0】) this.listControl.Add(btnTemperatureStatus);//(第2个,listControl【1】) this.listControl.Add(btnPmStatus);//(第3个,listControl【2】) this.listControl.Add(btnPmUnit);//(第4个,listControl【3】) this.listControl.Add(btnHumidityUnit);//(第5个,listControl【4】) this.listControl.Add(btnTemperatureUnit);//(第6个,listControl【5】) this.listFrameLayout.Add(frameHumidityTextFrameLayout);//(第1个,listControl【0】) this.listFrameLayout.Add(frameTemperatureTextFrameLayout);//(第2个,listControl【1】) this.listFrameLayout.Add(framePmTextFrameLayout);//(第3个,listControl【2】) } #endregion #region ■ 是否获取网关反馈的结果_____________ /// /// 检测网关的反馈结果(属性上报的对象:device.DeviceStatusReport) /// /// 命令区分 /// 上报数据 /// public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report) { if (comandDiv == ReceiveComandDiv.A设备属性上报) { if (report.DeviceStatusReport.CluterID == 1026) { var attriButeList = report.DeviceStatusReport.AttriBute; foreach (var attList in attriButeList) { if (attList.AttributeId == 0) { HdlThreadLogic.Current.RunMain(() => { UpdateStatus(); }); //已经接收到网关的反馈 return true; } } } if (report.DeviceStatusReport.CluterID == 1029) { var attriButeList = report.DeviceStatusReport.AttriBute; foreach (var attList in attriButeList) { if (attList.AttributeId == 0) { HdlThreadLogic.Current.RunMain(() => { UpdateStatus(); }); //已经接收到网关的反馈 return true; } } } if (report.DeviceStatusReport.CluterID == 1066) { var attriButeList = report.DeviceStatusReport.AttriBute; foreach (var attList in attriButeList) { if (attList.AttributeId == 0) { HdlThreadLogic.Current.RunMain(() => { UpdateStatus(); }); //已经接收到网关的反馈 return true; } } } } return false; } #endregion #region ■ 刷新状态_____________ /// /// 刷新状态 /// private void UpdateStatus() { //设置状态文字 this.listControl[0].Text = pMSensor.currentHumidity.ToString(); this.listControl[1].Text = pMSensor.currentTemperature.ToString(); this.listControl[2].Text = pMSensor.currentPmData.ToString(); //设置状态文字 var curText = Language.StringByID(R.MyInternationalizationString.AirQuality) + QuailityType(); this.SetStatuText(curText); this.listControl[0].Width = this.listControl[0].GetRealWidthByText(); this.listControl[4].X = this.listControl[0].Right; this.listControl[1].Width = this.listControl[1].GetRealWidthByText(); this.listControl[5].X = this.listControl[1].Right; this.listControl[2].Width = this.listControl[2].GetRealWidthByText(); this.listControl[3].X = this.listControl[2].Right; this.listControl[3].Width = this.listControl[3].GetRealWidthByText(); this.listFrameLayout[0].Width = this.listControl[0].Width + this.listControl[4].Width; this.listFrameLayout[1].Width = this.listControl[1].Width + this.listControl[5].Width; this.listFrameLayout[2].Width = this.listControl[2].Width + this.listControl[3].Width; this.listFrameLayout[0].Gravity = Gravity.CenterHorizontal; this.listFrameLayout[1].Gravity = Gravity.CenterHorizontal; this.listFrameLayout[2].Gravity = Gravity.CenterHorizontal; } /// /// 质量等级 /// private string QuailityType() { string curQuality = string.Empty; if (pMSensor.currentPmData <= 35 && pMSensor.currentPmData >= 0) { curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality); } else if (pMSensor.currentPmData <= 75 && pMSensor.currentPmData > 35) { curQuality = Language.StringByID(R.MyInternationalizationString.GoodAirQuality); } else if (pMSensor.currentPmData <= 115 && pMSensor.currentPmData > 75) { curQuality = Language.StringByID(R.MyInternationalizationString.LightPollution); } else if (pMSensor.currentPmData <= 150 && pMSensor.currentPmData > 115) { curQuality = Language.StringByID(R.MyInternationalizationString.Moderatelyolluted); } else if (pMSensor.currentPmData <= 250 && pMSensor.currentPmData > 150) { curQuality = Language.StringByID(R.MyInternationalizationString.HeavyPollution); } else if (pMSensor.currentPmData > 250) { curQuality = Language.StringByID(R.MyInternationalizationString.SeriousPollution); } else { curQuality = ""; } //设置状态文字 return curQuality; } #endregion } }