using Aitex.Common.Util; using Aitex.Core.Util; using MECF.Framework.Common.Simulator; using System.Collections.Generic; using System.IO; namespace Aitex.Core.RT.Device { public class SimulatorCommManager:Singleton { #region 内部变量 /// /// 关联变量字典 /// private Dictionary _relatedDictionary = new Dictionary(); #endregion //delegate #region Delegate public delegate void UpdateVariableValueChanged(string sourceName, string targetName, bool value, bool revert); #endregion #region 事件 /// /// 变量变更事件 /// public event UpdateVariableValueChanged OnUpdateVariableValueChanged; #endregion public void Initialize() { //加载相关联的IO映射配置文件 string xmlPath = PathManager.GetCfgDir() + "SimulatorIOMapCfg.xml"; SimulatorIOMapConfig cfg = CustomXmlSerializer.Deserialize(new FileInfo(xmlPath)); foreach (var item in cfg.SimulatorIOMapConfigs) { _relatedDictionary[item.SourceIOName] = item.TargetIONameA; } } /// /// 通知受关联模块变化的变量以及变化的值 /// /// private void UpdateVariableValue(string sourceName,string targetName, bool value, bool invert) { if (OnUpdateVariableValueChanged != null) { OnUpdateVariableValueChanged(sourceName,targetName, value, invert); } } /// /// 检查变化的值是否影响别的模块 /// /// /// /// public void CheckDataChanged(string name, bool value, bool invert) { if (_relatedDictionary.ContainsKey(name)) { UpdateVariableValue(name, _relatedDictionary[name], value, invert); } } } }