65 lines
2.1 KiB
C#
65 lines
2.1 KiB
C#
using Aitex.Core.RT.Device.Devices;
|
||
using System.Collections.Generic;
|
||
|
||
namespace Aitex.Core.RT.Device.PmDevices
|
||
{
|
||
/// <summary>
|
||
/// Recipe使用枚举设置模式时,气阀需要对应操作
|
||
/// 当前对象包含阀DI,对应模式下操作气阀设置相应的状态
|
||
/// </summary>
|
||
public class ValveActionData
|
||
{
|
||
/// <summary>
|
||
/// 气阀对应的PM
|
||
/// </summary>
|
||
public string Module { get; private set; }
|
||
|
||
/// <summary>
|
||
/// 气阀对应Device中的ID
|
||
/// </summary>
|
||
public string Id { get; private set; }
|
||
|
||
/// <summary>
|
||
/// 气阀名称
|
||
/// </summary>
|
||
public string Name { get; private set; }
|
||
|
||
private readonly IValve _valve;
|
||
|
||
/// <summary>
|
||
/// 存储对应枚举中,需要设置气阀状态
|
||
/// </summary>
|
||
private readonly Dictionary<string, bool> _valveActionDic = new Dictionary<string, bool>();
|
||
|
||
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;
|
||
}
|
||
}
|
||
} |