using Aitex.Core.RT.Device.Devices;
using System.Collections.Generic;
namespace Aitex.Core.RT.Device.PmDevices
{
///
/// Recipe使用枚举设置模式时,气阀需要对应操作
/// 当前对象包含阀DI,对应模式下操作气阀设置相应的状态
///
public class ValveActionData
{
///
/// 气阀对应的PM
///
public string Module { get; private set; }
///
/// 气阀对应Device中的ID
///
public string Id { get; private set; }
///
/// 气阀名称
///
public string Name { get; private set; }
private readonly IValve _valve;
///
/// 存储对应枚举中,需要设置气阀状态
///
private readonly Dictionary _valveActionDic = new Dictionary();
public ValveActionData(string module, string id, string name)
{
Module = module;
Id = id;
Name = name;
_valve = DEVICE.GetDevice($"{Module}.{Name}") as IValve;
System.Diagnostics.Debug.Assert(_valve != null,
$"{Module} {Id} {Name} valve setting not valid : ValveActionData");
}
public void AddDictionary(string key, bool value)
{
if (_valveActionDic.ContainsKey(key))
System.Diagnostics.Debug.Assert(false, $"{Module} {Id} {Name} Dictionary contains key:ValveActionData");
else
_valveActionDic.Add(key, value);
}
public bool SetValve(string module, out string reson)
{
if (_valveActionDic.TryGetValue(module, out bool value))
{
_valve.TurnValve(value, out reson);
return true;
}
//System.Diagnostics.Debug.Assert(false, $"Valve not configuration:{Name}");
reson = $"Valve no need to set:{Name}";
return true;
}
}
}