Пример #1
0
        public virtual void SwitchPhase(TrafficPhase trafficPhase)
        {
            if (isDisposed)
            {
                return;
            }
            CurrentPhase = trafficPhase;
            switch (trafficPhase)
            {
            case TrafficPhase.RedPhase:
                TrafficLight.RedSignal.Status    = SetPinValue(TrafficLight.RedSignal.Pin, PinValue.High);
                TrafficLight.YellowSignal.Status = SetPinValue(TrafficLight.YellowSignal.Pin, PinValue.Low);
                break;

            case TrafficPhase.RedYellowPhase:
                TrafficLight.RedSignal.Status    = SetPinValue(TrafficLight.RedSignal.Pin, PinValue.High);
                TrafficLight.YellowSignal.Status = SetPinValue(TrafficLight.YellowSignal.Pin, PinValue.High);
                break;

            case TrafficPhase.YellowPhase:
                TrafficLight.YellowSignal.Status = SetPinValue(TrafficLight.YellowSignal.Pin, PinValue.High);
                TrafficLight.GreenSignal.Status  = SetPinValue(TrafficLight.GreenSignal.Pin, PinValue.Low);
                break;

            case TrafficPhase.GreenPhase:
                TrafficLight.RedSignal.Status    = SetPinValue(TrafficLight.RedSignal.Pin, PinValue.Low);
                TrafficLight.YellowSignal.Status = SetPinValue(TrafficLight.YellowSignal.Pin, PinValue.Low);
                TrafficLight.GreenSignal.Status  = SetPinValue(TrafficLight.GreenSignal.Pin, PinValue.High);
                break;
            }
        }
Пример #2
0
 public TrafficLightControllerBase(TrafficLight trafficLight, TrafficPhase initialPhase)
 {
     TrafficLight   = trafficLight;
     ControllerGuid = Guid.NewGuid();
     controller     = new GpioController();
     SetupPin();
     SwitchPhase(initialPhase);
 }
Пример #3
0
 public TrafficLightStatusMessageArgs(string message, TrafficPhase phase, Guid guid)
 {
     Message        = message;
     TrafficPhase   = phase;
     ControllerGuid = guid;
 }
 private void SendStatusMessage(string message, TrafficPhase phase)
 {
     TrafficLightStatusMessageHandler?.Invoke(this, new TrafficLightStatusMessageArgs(message, phase, ControllerGuid));
 }
        /// <summary>
        /// Createas a new Trafficlight controller
        /// </summary>
        /// <param name="trafficLight">The traffic light to controll</param>
        /// <param name="initialPhase">The initial phase for this traffic light</param>
        public TrafficLightController(TrafficLight trafficLight, TrafficPhase initialPhase)
            :base(trafficLight, initialPhase)
        {

        }