Files
ATV_STDLabelAttach/Handler/Project/Device/StateMachine.cs
2025-07-17 16:11:46 +09:00

92 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project.Device
{
public class CSequence : AR.StateMachineSequence
{
public CSequence(int stepLen = 255) : base(stepLen) { }
public void Clear(eSMStep idx)
{
base.Clear((int)idx);
}
public int Get(eSMStep idx)
{
return base.Get((int)idx);
}
public void Set(eSMStep idx, byte value)
{
base.Set((int)idx, value);
}
public void Update(eSMStep idx, int incValue = 1)
{
base.Update((int)idx, incValue);
}
public TimeSpan GetTime(eSMStep idx = 0)
{
return base.GetTime((int)idx);
}
public int GetData(eSMStep idx)
{
return base.GetData((int)idx);
}
public void ClearData(eSMStep idx) { base.ClearData((int)idx); }
public void AddData(eSMStep idx, byte value = 1)
{
base.AddData((int)idx, value);
}
public void SetData(eSMStep idx, byte value)
{
_runseqdata[(int)idx] = value;
}
public void UpdateTime(eSMStep idx)
{
_runseqtime[(int)idx] = DateTime.Now;
}
}
public class CStateMachine : AR.StateMachine
{
/// <summary>
/// Sequece Value / data
/// </summary>
public CSequence seq;
public eSMStep PrePauseStep = eSMStep.NOTSET;
public CStateMachine()
{
seq = new CSequence(255);
}
public new eSMStep Step { get { return (eSMStep)base.Step; } }
public void SetNewStep(eSMStep newstep_, Boolean force = false)
{
//일시중지라면 중지전의 상태를 백업한다
if (newstep_ == eSMStep.PAUSE && this.Step != eSMStep.PAUSE && this.Step != eSMStep.WAITSTART) PrePauseStep = this.Step;
base.SetNewStep((byte)newstep_, force);
}
public new eSMStep getNewStep
{
get
{
return (eSMStep)newstep_;
}
}
public new eSMStep getOldStep
{
get
{
return (eSMStep)oldstep_;
}
}
}
}