2023-04-24 18:03:19 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
2023-04-28 10:15:33 +08:00
|
|
|
|
namespace MECF.Framework.Common.Device.Bases
|
2023-04-24 18:03:19 +08:00
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 预设的信号灯塔元件动作。
|
|
|
|
|
/// </summary>
|
2023-05-06 16:57:09 +08:00
|
|
|
|
public class STEventAction : IComparable, ICloneable
|
2023-04-24 18:03:19 +08:00
|
|
|
|
{
|
2023-05-08 11:19:59 +08:00
|
|
|
|
#region Constructors
|
|
|
|
|
|
2023-04-24 18:03:19 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 信号灯塔元件动作构造函数。
|
|
|
|
|
/// </summary>
|
2023-05-08 11:19:59 +08:00
|
|
|
|
/// <param name="name">动作名称。</param>
|
|
|
|
|
/// <param name="light">信号塔组件类型(名称)。</param>
|
|
|
|
|
/// <param name="status">信号塔组件输出状态。</param>
|
|
|
|
|
/// <param name="blinkPattern">信号塔组件工作模式。如果传入空值,则自动调用
|
|
|
|
|
/// <see cref="STBlinkPattern.GetDefaultPattern"/>以创建默认工作模式。</param>
|
|
|
|
|
public STEventAction(string name, LightType light, TowerLightStatus status, STBlinkPattern blinkPattern = null)
|
2023-04-24 18:03:19 +08:00
|
|
|
|
{
|
2023-05-08 11:19:59 +08:00
|
|
|
|
Name = name;
|
2023-04-24 18:03:19 +08:00
|
|
|
|
Light = light;
|
|
|
|
|
Status = status;
|
2023-05-06 16:57:09 +08:00
|
|
|
|
BlinkPattern = blinkPattern ?? STBlinkPattern.GetDefaultPattern();
|
2023-04-24 18:03:19 +08:00
|
|
|
|
}
|
2023-05-08 11:19:59 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region Properties
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 动作名称。
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string Name { get; }
|
|
|
|
|
|
2023-04-24 18:03:19 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 返回信号灯实例。
|
|
|
|
|
/// </summary>
|
|
|
|
|
public LightType Light { get; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2023-05-05 11:38:25 +08:00
|
|
|
|
/// 设置或返回信号灯的输出状态。
|
2023-04-24 18:03:19 +08:00
|
|
|
|
/// 支持的状态请参考<see cref="TowerLightStatus"/>枚举。
|
|
|
|
|
/// </summary>
|
2023-05-05 11:38:25 +08:00
|
|
|
|
public TowerLightStatus Status { get; set; }
|
2023-05-01 18:58:42 +08:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
2023-05-05 11:38:25 +08:00
|
|
|
|
/// 设置或返回信号灯闪烁模式。
|
2023-05-01 18:58:42 +08:00
|
|
|
|
/// </summary>
|
2023-05-05 11:38:25 +08:00
|
|
|
|
public STBlinkPattern BlinkPattern { get; set; }
|
2023-04-24 18:03:19 +08:00
|
|
|
|
|
2023-05-08 11:19:59 +08:00
|
|
|
|
#endregion
|
|
|
|
|
|
2023-04-24 18:03:19 +08:00
|
|
|
|
#region Methods
|
|
|
|
|
|
2023-05-05 15:46:00 +08:00
|
|
|
|
/// <inheritdoc />
|
|
|
|
|
public int CompareTo(object obj)
|
|
|
|
|
{
|
2023-05-06 16:57:09 +08:00
|
|
|
|
if (obj is not STEventAction target)
|
2023-05-05 15:46:00 +08:00
|
|
|
|
return -1;
|
|
|
|
|
|
2023-05-06 16:57:09 +08:00
|
|
|
|
return (BlinkPattern.CompareTo(target.BlinkPattern) == 0
|
|
|
|
|
&& Status == target.Status
|
|
|
|
|
&& Light == target.Light)
|
|
|
|
|
? 0
|
|
|
|
|
: -1;
|
2023-05-05 17:10:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc />
|
|
|
|
|
public object Clone()
|
|
|
|
|
{
|
2023-05-08 11:19:59 +08:00
|
|
|
|
return new STEventAction(Name, Light, Status, (STBlinkPattern)BlinkPattern.Clone());
|
2023-05-05 15:46:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
2023-05-06 16:57:09 +08:00
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public override string ToString()
|
|
|
|
|
{
|
|
|
|
|
return $"{Light}, {Status}";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
2023-05-05 17:10:07 +08:00
|
|
|
|
|
2023-04-24 18:03:19 +08:00
|
|
|
|
}
|
|
|
|
|
}
|