using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.IO; using System.Reflection; using System.Xml.Serialization; using ICSharpCode.Core; using Mesnac.Basic; using Mesnac.Codd.Session; namespace Mesnac.Action.ChemicalWeighing.Cache { /// /// 数据缓存辅助类 /// public class CacheHelper { #region 字段定义 private static List _alarmInfoList; //用于按数据块、起始字、长度进行读取 private static List _alarmBlockWordList; //数据块、地址字列表 private static List _pmtAlarmInfoList; //基础数据 #endregion #region 报警参数 #region 缓存报警参数信息 /// /// 缓存报警参数信息 /// /// 报警参数列表 public static void CacheAlarmInfo() { _alarmInfoList = Alarm.AlarmHelper.GetBlockStartLengthList(); _pmtAlarmInfoList = Alarm.AlarmHelper.GetPmtAlarmInfoList(); _alarmBlockWordList = new List(); foreach (Entity.PmtAlarmInfo entity in _pmtAlarmInfoList) { bool flag = false; foreach (Entity.SimpleAlarmInfo info in _alarmBlockWordList) { if (entity.AlarmPLC == info.AlramPLC && entity.AlarmBlock == info.AlarmBlock && entity.AlarmAddress == info.AlarmAddress) { flag = true; break; } } if (!flag) { Entity.SimpleAlarmInfo newEntity = new Entity.SimpleAlarmInfo(); newEntity.AlramPLC = entity.AlarmPLC; newEntity.AlarmBlock = entity.AlarmBlock; newEntity.AlarmAddress = entity.AlarmAddress; newEntity.AlarmBit = entity.AlarmBit.ToString(); _alarmBlockWordList.Add(newEntity); } } } #endregion #region 清空缓存的报警参数信息 /// /// 清空缓存的报警参数信息 /// public static void ClearAlarmInfo() { _alarmInfoList = null; _pmtAlarmInfoList = null; _alarmBlockWordList = null; } #endregion #region 从缓存获取所有报警参数扩展实体列表 /// /// 从缓存获取所有报警参数扩展实体列表 /// /// public static List AlarmInfoList { get { if (_alarmInfoList == null) { CacheAlarmInfo(); } return _alarmInfoList; } } #endregion #region 从缓存获取数据块和报警地址字列表 /// /// 从缓存获取数据块和报警地址字列表 /// /// public static List BlockWordList { get { if (_pmtAlarmInfoList == null) { CacheAlarmInfo(); } return _alarmBlockWordList; } } #endregion #region 从缓存获取报警参数实体信息 /// /// 从缓存获取报警参数实体信息 /// /// 报警参数PLC /// 报警参数数据块 /// 报警参数地址字 /// 报警参数数据位 /// 返回对应的报警参数实体对象 public static Entity.PmtAlarmInfo GetPmtAlarmInfoFromCache(string alarmPLC, string alarmBlock, int alarmAddress, int alarmBit) { if (_pmtAlarmInfoList == null) { CacheAlarmInfo(); } foreach(Entity.PmtAlarmInfo entity in _pmtAlarmInfoList) { if (entity.AlarmPLC == alarmPLC && entity.AlarmBlock == alarmBlock && entity.AlarmAddress == alarmAddress && entity.AlarmBit == alarmBit) { return entity; } } return null; } #endregion #endregion } }