using HDL_ON.Entity; using System; using System.Collections.Generic; using System.Text; namespace HDL_ON.Stan { /// /// 设备状态推送逻辑(继承于EditorFormBase的界面专用) /// public class HdlDeviceStatuPushLogic { #region ■ 变量声明___________________________ /// /// 设备状态推送逻辑(继承于EditorFormBase的界面专用) /// private static HdlDeviceStatuPushLogic m_Current = null; /// /// 设备状态推送逻辑(继承于EditorFormBase的界面专用) /// public static HdlDeviceStatuPushLogic Current { get { if (m_Current == null) { m_Current = new HdlDeviceStatuPushLogic(); } return m_Current; } } #endregion #region ■ 状态更新___________________________ /// /// 设备状态更新 /// /// 云端推送的更新数据 public Function UpdateDeviceStatu(string sId ,List updateData) { var localDevice = FunctionList.List.GetDeviceFunctionList().Find((obj) => obj.sid == sId); if (localDevice != null) { foreach (var attr in updateData) { var localAttr2 = localDevice.attributes.Find((obj) => obj.key == attr.key); if (localAttr2 == null) { //本身它就没有这个属性,则不处理 continue; } //更改属性值 localAttr2.curValue = attr.value; var localAttr = localDevice.status.Find((obj) => obj.key == attr.key); if (localAttr == null) { //status是当前设备上报过的属性才会存在,也就是它的个数有可能和attributes不一致 localAttr = new AttributesStatus() { key = attr.key, value = attr.value }; localDevice.status.Add(localAttr); } //更改属性值 localAttr.value = attr.value; } //全部界面推送 HdlFormLogic.Current.DeviceStatuPush(localDevice); } return localDevice; } #endregion } }