using System; using System.Collections.Generic; using System.Text; using ZigBee.Device; using System.Threading.Tasks; namespace Shared.Phone.UserCenter { /// /// PIR传感器的逻辑 /// public class HdlDevicePirSensorLogic { #region ■ 变量声明___________________________ /// /// PIR传感器的逻辑 /// private static HdlDevicePirSensorLogic m_Current = null; /// /// PIR传感器的逻辑 /// public static HdlDevicePirSensorLogic Current { get { if (m_Current == null) { m_Current = new HdlDevicePirSensorLogic(); } return m_Current; } } #endregion #region ■ 光感等级总刻度_____________________ /// /// 获取PIR传感器的【光感等级总刻度】,错误时返回-1 /// /// /// public async Task GetPirLightAbilitySize(IASZone iASZone) { var data = await iASZone.GetPIRLightAbilitySizeAsync(); //共通错误检测 string error = HdlCheckLogic.Current.CheckCommonErrorCode(data); if (error != null) { this.ShowErrorMsg(error); return -1; } if (data == null || data.errorMessageBase != null || data.LightLevelCount == -1) { //获取传感器光感等级失败 string msg = Language.StringByID(R.MyInternationalizationString.uGetPirSensorLightPerceptionRegulationFail); //拼接上【网关回复超时】的Msg msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, data); this.ShowErrorMsg(msg); return -1; } return data.LightLevelCount; } #endregion #region ■ 获取配置信息_______________________ /// /// 获取PIR传感器的【配置信息】,错误时返回null /// /// /// public async Task GetPirSensorLightSettion(IASZone iASZone) { var data = await iASZone.GetPIRSensorParamateAsync(); if (data == null || data.configureParamates == null) { //获取传感器设置信息失败 string msg = Language.StringByID(R.MyInternationalizationString.uGetPirSensorSettionFail); //拼接上【网关回复超时】的Msg msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, data); this.ShowErrorMsg(msg); return null; } return data.configureParamates; } #endregion #region ■ 设置配置信息_______________________ /// /// 设置PIR传感器的【配置信息】 /// /// 传感器对象 /// 灯光配置 /// public async Task SetPirSensorSettion(IASZone iASZone, IASZone.ConfigureParamates configure) { var result = await iASZone.SetPIRSensorParamateAsync(configure); if (result == null || result.responseData == null) { //设置传感器配置信息失败 string msg = Language.StringByID(R.MyInternationalizationString.uSetPirSensorSettionFail); //拼接上【网关回复超时】的Msg msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result); this.ShowErrorMsg(msg); return false; } if (result.responseData.status != 0) { //设置传感器配置信息失败 string msg = Language.StringByID(R.MyInternationalizationString.uSetPirSensorSettionFail); this.ShowErrorMsg(msg); return false; } //备份设置 await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(iASZone, GatewayBackupEnum.APir灯光配置, configure); return true; } #endregion #region ■ 一般方法___________________________ /// /// 显示错误信息窗口 /// /// private void ShowErrorMsg(string msg) { Application.RunOnMainThread(() => { var contr = new ShowMsgControl(ShowMsgType.Error, msg); contr.Show(); }); } /// /// 显示Tip信息窗口 /// /// private void ShowTipMsg(string msg) { Application.RunOnMainThread(() => { var contr = new UserCenter.ShowMsgControl(ShowMsgType.Tip, msg); contr.Show(); }); } #endregion } }