- added events Event.TimerBusy, Event.ValvesBusy, etc. - fixed bug in SetValvesOp - preparing a virtual bench drawing on the Process screen - partly done
73 lines
1.9 KiB
C#
73 lines
1.9 KiB
C#
using log4net;
|
|
|
|
namespace TBF.BenchControl.Operations
|
|
{
|
|
/// <summary>
|
|
/// Implements timer function
|
|
///
|
|
/// Constructors:
|
|
/// Timer(timerTimeMs) ................ use Event.TimerExpired as eventExpired
|
|
/// Timer(timerTimeMs, eventExpired) .. use constructor argument as eventExpired
|
|
///
|
|
/// Start argument:
|
|
///
|
|
/// Events:
|
|
/// Event.None ........ operation is in progress
|
|
/// eventExpired ...... timer expired
|
|
/// </summary>
|
|
public class TimerOp : IOperation
|
|
{
|
|
private static readonly ILog log = LogManager.GetLogger(typeof(TimerOp));
|
|
public override string ToString() { return string.Format("TimerOp({0}s, Event.{1})", timerTime, eventExpired); }
|
|
|
|
/// Private fields
|
|
bool timerStarted = false;
|
|
bool timeExpired = false;
|
|
int expireTime;
|
|
|
|
/// Set by constructors
|
|
int timerTime;
|
|
Event eventExpired;
|
|
|
|
/// <summary>
|
|
/// Constructors, optional argument is a timer name (you can create more then one timer)
|
|
/// </summary>
|
|
public TimerOp(int timerTime, Event eventExpired)
|
|
{
|
|
this.timerTime = timerTime;
|
|
this.eventExpired = eventExpired;
|
|
}
|
|
public TimerOp(int timerTime)
|
|
: this(timerTime, Event.TimerExpired)
|
|
{
|
|
}
|
|
|
|
/// <param name="obj">Time period (TimeSpan)</param>
|
|
public void Start()
|
|
{
|
|
timeExpired = false;
|
|
timerStarted = true;
|
|
expireTime = StateMachine.Time + timerTime;
|
|
}
|
|
|
|
public Event Run()
|
|
{
|
|
if (timerStarted && !timeExpired && StateMachine.Time >= expireTime)
|
|
{
|
|
timeExpired = true;
|
|
return eventExpired;
|
|
}
|
|
else
|
|
{
|
|
return Event.TimerBusy;
|
|
}
|
|
}
|
|
|
|
public void Stop()
|
|
{
|
|
timerStarted = false;
|
|
timeExpired = false;
|
|
}
|
|
}
|
|
}
|