using Rs.Motion; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Timers; namespace Rs.MotionPlat.Flow { public enum ELightStatus { Red, Yellow, Green, YellowBlink, } public class LightManger { Timer timer; ELightStatus LightStatus = ELightStatus.YellowBlink; bool on = false; private LightManger() { timer = new Timer(); timer.Interval = 1000; timer.Elapsed += Timer_Elapsed; timer.Enabled = true; IoManager.Instance.WriteOut("黄灯", 1); IoManager.Instance.WriteOut("红灯", 1); IoManager.Instance.WriteOut("绿灯", 1); } private static LightManger instance; public static LightManger Instance { get { if(instance == null) instance = new LightManger(); return instance; } } private void Timer_Elapsed(object sender, ElapsedEventArgs e) { switch (LightStatus) { case ELightStatus.YellowBlink: if(!on) { IoManager.Instance.WriteOut("黄灯", 0); on = true; } else { IoManager.Instance.WriteOut("黄灯", 1); on = false; } break; case ELightStatus.Red: if (!on) { IoManager.Instance.WriteOut("黄灯", 1); IoManager.Instance.WriteOut("红灯", 0); IoManager.Instance.WriteOut("绿灯", 1); on = true; } break; case ELightStatus.Yellow: if (!on) { IoManager.Instance.WriteOut("黄灯", 0); IoManager.Instance.WriteOut("红灯", 1); IoManager.Instance.WriteOut("绿灯", 1); on = true; } break; case ELightStatus.Green: if (!on) { IoManager.Instance.WriteOut("黄灯", 1); IoManager.Instance.WriteOut("红灯", 1); IoManager.Instance.WriteOut("绿灯", 0); on =true; } break; } } public void SetStatus(ELightStatus status) { LightStatus=status; on = false; } } }