SimulatorCommManager.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using Aitex.Common.Util;
  2. using Aitex.Core.Util;
  3. using MECF.Framework.Common.Simulator;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. namespace Aitex.Core.RT.Device
  7. {
  8. public class SimulatorCommManager:Singleton<SimulatorCommManager>
  9. {
  10. #region 内部变量
  11. /// <summary>
  12. /// 关联变量字典
  13. /// </summary>
  14. private Dictionary<string, string> _relatedDictionary = new Dictionary<string, string>();
  15. #endregion
  16. //delegate
  17. #region Delegate
  18. public delegate void UpdateVariableValueChanged(string name,bool value);
  19. #endregion
  20. #region 事件
  21. /// <summary>
  22. /// 变量变更事件
  23. /// </summary>
  24. public event UpdateVariableValueChanged OnUpdateVariableValueChanged;
  25. #endregion
  26. public void Initialize()
  27. {
  28. //加载相关联的IO映射配置文件
  29. string xmlPath = PathManager.GetCfgDir() + "SimulatorIOMapCfg.xml";
  30. SimulatorIOMapConfig cfg = CustomXmlSerializer.Deserialize<SimulatorIOMapConfig>(new FileInfo(xmlPath));
  31. foreach (var item in cfg.SimulatorIOMapConfigs)
  32. {
  33. _relatedDictionary[item.SourceIOName] = item.TargetIONameA;
  34. }
  35. }
  36. /// <summary>
  37. /// 通知受关联模块变化的变量以及变化的值
  38. /// </summary>
  39. /// <param name="data"></param>
  40. private void UpdateVariableValue(string name, bool value)
  41. {
  42. if (OnUpdateVariableValueChanged != null)
  43. {
  44. OnUpdateVariableValueChanged(name, value);
  45. }
  46. }
  47. /// <summary>
  48. /// 检查变化的值是否影响别的模块
  49. /// </summary>
  50. /// <param name="name"></param>
  51. /// <param name="value"></param>
  52. /// <returns></returns>
  53. public void CheckDataChanged(string name, bool value)
  54. {
  55. if (_relatedDictionary.ContainsKey(name))
  56. {
  57. UpdateVariableValue(_relatedDictionary[name], value);
  58. }
  59. }
  60. }
  61. }