using System;
|
using System.Collections.Generic;
|
using Shared.Common;
|
using Shared.Phone.UserCenter;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.MainPage.ControlForm
|
{
|
/// <summary>
|
/// PM2.5传感器类型的深度卡片界面
|
/// </summary>
|
public class DevicePmSensorDetailCardForm : DeviceDetailCardCommonForm
|
{
|
#region ■ 变量声明___________________________
|
/// <summary>
|
/// 界面上可以操作的控件
|
/// </summary>
|
private List<ButtonBase> listControl = new List<ButtonBase>();
|
/// <summary>
|
/// 控件
|
/// </summary>
|
private PMSensor pMSensor = null;
|
/// <summary>
|
/// 状态控件
|
/// </summary>
|
private NormalViewControl btnStatu = null;
|
/// <summary>
|
/// 当前的文本
|
/// </summary>
|
private string CurrentText = string.Empty;
|
|
/// <summary>
|
/// 设备名称控件
|
/// </summary>
|
private NormalViewControl btnDeviceName = null;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack)
|
{
|
//左滑不能
|
this.ScrollEnabled = true;
|
this.pMSensor = (PMSensor)this.device;
|
//先清空
|
this.listControl = new List<ButtonBase>();
|
InitPmControl(frameWhiteBack);
|
UpdateStatus();
|
}
|
|
/// <summary>
|
/// 初始化PM2.5传感器控件
|
/// </summary>
|
/// <param name="frameWhiteBack"></param>
|
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 btnHumidityStatus = new NormalViewControl(193, 92, true);
|
btnHumidityStatus.Y = Application.GetRealHeight(181);
|
btnHumidityStatus.Text = "20";
|
btnHumidityStatus.TextSize = 30;
|
btnHumidityStatus.TextColor = ZigbeeColor.Current.XMWhite;
|
btnHumidityStatus.TextAlignment = TextAlignment.CenterRight;
|
frameHumidityPic.AddChidren(btnHumidityStatus);
|
|
//湿度单位
|
var btnHumidityUnit = new NormalViewControl(60, 40, true);
|
btnHumidityUnit.Y = Application.GetRealHeight(181 + 46);
|
btnHumidityUnit.X = btnHumidityStatus.Right;
|
btnHumidityUnit.Text = "%";
|
btnHumidityUnit.TextSize = 14;
|
btnHumidityUnit.TextColor = ZigbeeColor.Current.XMWhite;
|
btnHumidityUnit.TextAlignment = TextAlignment.CenterLeft;
|
frameHumidityPic.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 btnTemperatureStatus = new NormalViewControl(193, 92, true);
|
btnTemperatureStatus.Y = Application.GetRealHeight(181);
|
btnTemperatureStatus.Text = "20";
|
btnTemperatureStatus.TextSize = 30;
|
btnTemperatureStatus.TextColor = ZigbeeColor.Current.XMWhite;
|
btnTemperatureStatus.TextAlignment = TextAlignment.CenterRight;
|
frameTemperaturePic.AddChidren(btnTemperatureStatus);
|
|
//温度单位
|
var btnTemperatureUnit = new NormalViewControl(50, 40, true);
|
btnTemperatureUnit.Y = Application.GetRealHeight(181 + 46);
|
btnTemperatureUnit.X = btnTemperatureStatus.Right;
|
btnTemperatureUnit.Text = "℃";
|
btnTemperatureUnit.TextSize = 14;
|
btnTemperatureUnit.TextColor = ZigbeeColor.Current.XMWhite;
|
btnTemperatureUnit.TextAlignment = TextAlignment.CenterLeft;
|
frameTemperaturePic.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 btnPmStatus = new NormalViewControl(162, 92, true);
|
btnPmStatus.Y = Application.GetRealHeight(181);
|
btnPmStatus.Text = "155";
|
btnPmStatus.TextSize = 30;
|
btnPmStatus.TextColor = ZigbeeColor.Current.XMWhite;
|
btnPmStatus.TextAlignment = TextAlignment.CenterRight;
|
framePmPic.AddChidren(btnPmStatus);
|
|
//PM2.5单位 (第4个,listControl【3】)
|
var btnPmUnit = new NormalViewControl(144, 48, true);
|
btnPmUnit.Y = Application.GetRealHeight(181 + 41);
|
btnPmUnit.X = btnPmStatus.Right;
|
btnPmUnit.Text = "μg/m³";
|
btnPmUnit.TextSize = 14;
|
btnPmUnit.TextColor = ZigbeeColor.Current.XMWhite;
|
btnPmUnit.TextAlignment = TextAlignment.CenterLeft;
|
framePmPic.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】)
|
|
}
|
#endregion
|
|
#region ■ 是否获取网关反馈的结果_____________
|
|
/// <summary>
|
/// 检测网关的反馈结果(属性上报的对象:device.DeviceStatusReport)
|
/// </summary>
|
/// <param name="comandDiv">命令区分</param>
|
/// <param name="report">上报数据</param>
|
/// <returns></returns>
|
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 ■ 刷新状态_____________
|
/// <summary>
|
/// 刷新状态
|
/// </summary>
|
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);
|
|
|
if (pMSensor.currentHumidity <= 9 && pMSensor.currentHumidity >= 0)
|
{
|
this.listControl[0].Width = Application.GetRealWidth(168);
|
this.listControl[4].X = this.listControl[0].Right;
|
}
|
else if (pMSensor.currentHumidity < 100 && pMSensor.currentHumidity >= 10)
|
{
|
this.listControl[0].Width = Application.GetRealWidth(184);
|
this.listControl[4].X = this.listControl[0].Right;
|
}
|
else
|
{
|
this.listControl[0].Width = Application.GetRealWidth(188 + 30);
|
this.listControl[4].X = this.listControl[0].Right;
|
}
|
|
if (pMSensor.currentTemperature <= 9 && pMSensor.currentTemperature >= 0)
|
{
|
this.listControl[1].Width = Application.GetRealWidth(168);
|
this.listControl[5].X = this.listControl[1].Right;
|
}
|
else if (pMSensor.currentTemperature < 100 && pMSensor.currentTemperature >= 10)
|
{
|
this.listControl[1].Width = Application.GetRealWidth(190);
|
this.listControl[5].X = this.listControl[1].Right;
|
}
|
else
|
{
|
this.listControl[1].Width = Application.GetRealWidth(188 + 30);
|
this.listControl[5].X = this.listControl[1].Right;
|
}
|
|
}
|
|
/// <summary>
|
/// 质量等级
|
/// </summary>
|
private string QuailityType()
|
{
|
string curQuality = string.Empty;
|
|
if (pMSensor.currentPmData <= 35 && pMSensor.currentPmData >= 0)
|
{
|
curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
|
|
if (pMSensor.currentPmData < 10)
|
{
|
this.listControl[2].Width = Application.GetRealWidth(125);
|
this.listControl[3].X = this.listControl[2].Right;
|
}
|
else
|
{
|
this.listControl[2].Width = Application.GetRealWidth(145);
|
this.listControl[3].X = this.listControl[2].Right;
|
}
|
}
|
|
else if (pMSensor.currentPmData <= 75 && pMSensor.currentPmData > 35)
|
{
|
curQuality = Language.StringByID(R.MyInternationalizationString.GoodAirQuality);
|
this.listControl[2].Width = Application.GetRealWidth(145);
|
this.listControl[3].X = this.listControl[2].Right;
|
}
|
else if (pMSensor.currentPmData <= 115 && pMSensor.currentPmData > 75)
|
{
|
curQuality = Language.StringByID(R.MyInternationalizationString.LightPollution);
|
|
if (pMSensor.currentPmData < 100)
|
{
|
this.listControl[2].Width = Application.GetRealWidth(145);
|
this.listControl[3].X = this.listControl[2].Right;
|
}
|
else
|
{
|
this.listControl[2].Width = Application.GetRealWidth(162);
|
this.listControl[3].X = this.listControl[2].Right;
|
}
|
}
|
else if (pMSensor.currentPmData <= 150 && pMSensor.currentPmData > 115)
|
{
|
curQuality = Language.StringByID(R.MyInternationalizationString.Moderatelyolluted);
|
this.listControl[2].Width = Application.GetRealWidth(162);
|
this.listControl[3].X = this.listControl[2].Right;
|
}
|
else if (pMSensor.currentPmData <= 250 && pMSensor.currentPmData > 150)
|
{
|
curQuality = Language.StringByID(R.MyInternationalizationString.HeavyPollution);
|
this.listControl[2].Width = Application.GetRealWidth(176);
|
this.listControl[3].X = this.listControl[2].Right;
|
}
|
else if (pMSensor.currentPmData > 250)
|
{
|
curQuality = Language.StringByID(R.MyInternationalizationString.SeriousPollution);
|
this.listControl[2].Width = Application.GetRealWidth(176);
|
this.listControl[3].X = this.listControl[2].Right;
|
}
|
else
|
{
|
curQuality = "";
|
this.listControl[2].Width = Application.GetRealWidth(162);
|
this.listControl[3].X = this.listControl[2].Right;
|
}
|
//设置状态文字
|
return curQuality;
|
}
|
#endregion
|
|
|
|
}
|
}
|