89 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using COMM;
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Text;
 | |
| using System.Threading.Tasks;
 | |
| 
 | |
| namespace AR.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 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_;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | 
