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 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();
InitFreshAirControl(frameWhiteBack);
UpdateStatus();
}
///
/// 初始化PM2.5传感器控件
///
///
private void InitFreshAirControl(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);
//湿度数据(第1个,listControl【0】)
var btnHumidityStatus = new NormalViewControl(193, 92, true);
btnHumidityStatus.Y = Application.GetRealHeight(181);
btnHumidityStatus.Text = "20";
btnHumidityStatus.TextSize = 32;
btnHumidityStatus.TextColor = ZigbeeColor.Current.XMWhite;
btnHumidityStatus.TextAlignment = TextAlignment.CenterRight;
frameHumidityPic.AddChidren(btnHumidityStatus);
this.listControl.Add(btnHumidityStatus);
//湿度单位
var btnHumidityUnit = new NormalViewControl(37 + 81, 40, true);
btnHumidityUnit.Y = Application.GetRealHeight(181 + 46);
btnHumidityUnit.X = Application.GetRealWidth(190);
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);
//温度数据(第2个,listControl【1】)
var btnTemperatureStatus = new NormalViewControl(193, 92, true);
btnTemperatureStatus.Y = Application.GetRealHeight(181);
btnTemperatureStatus.Text = "20";
btnTemperatureStatus.TextSize = 32;
btnTemperatureStatus.TextColor = ZigbeeColor.Current.XMWhite;
btnTemperatureStatus.TextAlignment = TextAlignment.CenterRight;
frameTemperaturePic.AddChidren(btnTemperatureStatus);
this.listControl.Add(btnTemperatureStatus);
//温度单位
var btnTemperatureUnit = new NormalViewControl(40 + 81, 40, true);
btnTemperatureUnit.Y = Application.GetRealHeight(181 + 46);
btnTemperatureUnit.X = Application.GetRealWidth(188);
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数据(第3个,listControl【2】)
var btnPmStatus = new NormalViewControl(109 + 40, 92, true);
btnPmStatus.Y = Application.GetRealHeight(181);
btnPmStatus.Text = "35";
btnPmStatus.TextSize = 32;
btnPmStatus.TextColor = ZigbeeColor.Current.XMWhite;
btnPmStatus.TextAlignment = TextAlignment.CenterRight;
framePmPic.AddChidren(btnPmStatus);
this.listControl.Add(btnPmStatus);
//PM2.5单位
var btnPmUnit = new NormalViewControl(124 + 15, 43, true);
btnPmUnit.Y = Application.GetRealHeight(181 + 46);
btnPmUnit.X = Application.GetRealWidth(150);
btnPmUnit.Text = "μg/m³";
btnPmUnit.TextSize = 14;
btnPmUnit.TextColor = ZigbeeColor.Current.XMWhite;
btnPmUnit.TextAlignment = TextAlignment.CenterLeft;
framePmPic.AddChidren(btnPmUnit);
}
#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 ■ 设置方法
///
///命令
///0:Off
///1:Low
///3:High
///4:On
///5:Auto
/// 15:Manual
///
private void SetFanComand(int command)
{
//检测是否获取网关反馈的结果,如果网关没有回复,则会弹出消息
this.StartCheckResponeResult(this.listControl, (result) =>
{
//接收到网关回复
if (result == true)
{
}
});
}
#endregion
#region ■ 刷新状态_____________
///
/// 刷新状态
///
private void UpdateStatus()
{
//设置状态文字
this.listControl[0].Text = pMSensor.currentTemperature.ToString();
this.listControl[1].Text = pMSensor.currentHumidity.ToString();
this.listControl[2].Text = pMSensor.currentPmData.ToString();
//设置状态文字
this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uOpen1));
}
#endregion
}
}