using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using ZigBee.Device; namespace Shared.Phone.UserCenter { /// /// 空调的逻辑 /// public class HdlDeviceAirConditionerLogic { #region ■ 变量声明___________________________ /// /// 空调的逻辑 /// private static HdlDeviceAirConditionerLogic m_Current = null; /// /// 空调的逻辑 /// public static HdlDeviceAirConditionerLogic Current { get { if (m_Current == null) { m_Current = new HdlDeviceAirConditionerLogic(); } return m_Current; } } #endregion #region ■ 打开空调___________________________ /// /// 打开空调 /// /// 空调对象 /// public async Task OpenAirConditioner(AC device) { var result = await device.Open(); //检测网关返回的共通错误状态码 string error = HdlCheckLogic.Current.CheckCommonErrorCode(result); if (error != null) { this.ShowTipMsg(error); return false; } if (result == null || result.setWritableValueResponData == null || result.setWritableValueResponData.Status != 0) { //打开空调失败 string msg = Language.StringByID(R.MyInternationalizationString.uOpenAirConditionerFail); //拼接上【网关回复超时】的Msg msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result); this.ShowTipMsg(msg); return false; } if (result.setWritableValueResponData.Status != 0) { //打开空调失败 string msg = Language.StringByID(R.MyInternationalizationString.uOpenAirConditionerFail); this.ShowTipMsg(msg); return false; } return true; } #endregion #region ■ 打开空调___________________________ /// /// 打开空调 /// /// 空调对象 /// public async Task CloseAirConditioner(AC device) { var result = await device.Close(); //检测网关返回的共通错误状态码 string error = HdlCheckLogic.Current.CheckCommonErrorCode(result); if (error != null) { this.ShowTipMsg(error); return false; } if (result == null || result.setWritableValueResponData == null || result.setWritableValueResponData.Status != 0) { //关闭空调失败 string msg = Language.StringByID(R.MyInternationalizationString.uCloseAirConditionerFail); //拼接上【网关回复超时】的Msg msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result); this.ShowTipMsg(msg); return false; } if (result.setWritableValueResponData.Status != 0) { //关闭空调失败 string msg = Language.StringByID(R.MyInternationalizationString.uCloseAirConditionerFail); this.ShowTipMsg(msg); return false; } return true; } #endregion #region ■ 设置空调的自定义模式_______________ /// /// 设置空调的自定义模式 /// /// 空调对象 /// 从二进制转换的十进制值 /// public async Task SetAcModeSupport(AC device, int data) { var result = await HdlDeviceAttributeLogic.Current.WriteDeviceAttribute(device, 513, 4099, 25, data); //检测网关返回的共通错误状态码 string error = HdlCheckLogic.Current.CheckCommonErrorCode(result); if (error != null) { this.ShowTipMsg(error); return false; } if (result == null || result.setWritableValueResponData == null) { //设置空调模式失败 string msg = Language.StringByID(R.MyInternationalizationString.uSetAcModeFail); //拼接上【网关回复超时】的Msg msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result); this.ShowTipMsg(msg); ; return false; } if (result.setWritableValueResponData.Status != 0) { //设置空调模式失败 string msg = Language.StringByID(R.MyInternationalizationString.uSetAcModeFail); this.ShowTipMsg(msg); return false; } await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(device, GatewayBackupEnum.A空调自定义模式, data); 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 ShowMsgControl(ShowMsgType.Tip, msg); contr.Show(); }); } #endregion } }