示例#1
0
        //Uses the combo box to determine what output you want to toggle
        private void toggleOutput_Click(object sender, RoutedEventArgs e)
        {
            log.Info("Clicked the toggleOutput button");
            String  targetOutput = dioSelector.Text;
            DIOPins pinToToggle;

            log.Info(String.Format("{0} selected when toggleOutput button clicked", targetOutput));
            switch (targetOutput)
            {
            case "Heater (AN1)":
                pinToToggle = DIOPins.Heater_AN1;
                break;

            case "Air Solenoid (AN0)":
                pinToToggle = DIOPins.AirSolenoid_AN0;
                break;

            case "Water Pump (AN2)":
                pinToToggle = DIOPins.WaterPump_AN2;
                break;

            case "Air Pump (AN3)":
                pinToToggle = DIOPins.AirPump_AN3;
                break;

            default:
                log.Error(String.Format("Did not recognize selected port to toggle : {0}", targetOutput));
                return;
            }
            ToggleOutputEvent clickTarget = new ToggleOutputEvent(pinToToggle);

            if (_uiDelegate != null)
            {
                log.Debug("Adding the toggleOutput event to the processing queue");
                _uiDelegate.enqueueEvent(clickTarget);
            }
        }
示例#2
0
 public void toggleOutput(ToggleOutputEvent inToggleOutputEvent)
 {
     if (_deviceConnected)
     {
         bool    currentState;
         DIOPins pinToToggle = inToggleOutputEvent._pinToToggle;
         _pinStates.TryGetValue(pinToToggle, out currentState);
         log.Debug(string.Format("Trying to set pin {0} with current state {1}, to state {2}", pinToToggle, currentState, !currentState));
         if (currentState)
         {
             _physicalLayer.setOutputState(new UpdateOutputEvent(inToggleOutputEvent._pinToToggle, false));
             _pinStates.TryUpdate(pinToToggle, false, true);
         }
         else
         {
             _physicalLayer.setOutputState(new UpdateOutputEvent(inToggleOutputEvent._pinToToggle, true));
             _pinStates.TryUpdate(pinToToggle, true, false);
         }
     }
     else
     {
         log.Error("Can not toggle output because device is not connected");
     }
 }
示例#3
0
        /// <summary>
        /// Tells the physical layer to toggle the given pin.
        /// Uses a dictionary to determine the current state of the
        /// pin and tells the physical layer to put the pin in the oposite state
        ///
        /// Then it updates the dictionary to the new state
        ///
        /// If a pin in passed in it will create a new event and then pass the
        /// event to the designated responder
        /// </summary>
        /// <param name="pinToToggle"></param>
        public void toggleOutput(DIOPins pinToToggle)
        {
            ToggleOutputEvent toggleOutputEvent = new ToggleOutputEvent(pinToToggle);

            toggleOutput(toggleOutputEvent);
        }
示例#4
0
        //*************************** EventInterface End **************************************************//



        /// <summary>
        /// Method which the processing thread will execute in order to
        /// process the ui event queue.
        ///
        /// Will stop when the _shouldStop flag is set
        /// </summary>
        private void processQueue()
        {
            while (!_shouldStop)
            {
                //Get out the newest event
                log.Debug("Waiting for new event in UIHandle_LLSL processing queue");
                _enqueueEvent.WaitOne(100);
                if (_eventQueue.Count() < 1)
                {
                    continue;
                }
                log.Debug("UIHandle_LLSL processing thread received item enqueued event");
                Event newEvent;
                bool  dequeueSuccessful = _eventQueue.TryDequeue(out newEvent);
                if (!dequeueSuccessful)
                {
                    continue;
                }
                log.Info(string.Format("UIHandle_LLSL processing queue dequeued event {0}", newEvent.getEventIdentifier()));

                //Decide what to do with the event
                switch (newEvent.getEventIdentifier())
                {
                case EventIdentifier.GenericEvent:
                    break;

                case EventIdentifier.ConnectRequest:
                    log.Debug("Handling ConnectRequest ui event");
                    handleConnectEvent();
                    break;

                case EventIdentifier.ToggleLEDRequest:
                    log.Debug("Handling toggleLED ui event");
                    handleToggleLEDEvent();
                    break;

                case EventIdentifier.FlashLEDRequest:
                    log.Debug("Handling flashLED ui event");
                    handleFlashLEDEvent();
                    break;

                case EventIdentifier.ChangeLEDStateRequest:
                    ChangeLEDStateEvent changeLEDEvent = (ChangeLEDStateEvent)newEvent;
                    bool ledIsHigh = changeLEDEvent._isHigh;
                    log.Debug(string.Format("Handling changeLED (setting high: {0}) ui event", changeLEDEvent._isHigh));
                    handleChangeLEDStateEvent(ledIsHigh);
                    break;

                case EventIdentifier.ToggleOutputRequest:
                    ToggleOutputEvent toggleOutputEvent = (ToggleOutputEvent)newEvent;
                    DIOPins           pinToToggle       = toggleOutputEvent._pinToToggle;
                    log.Debug(string.Format("Handling toggleOutput (toggle pin: {0}) ui event", toggleOutputEvent._pinToToggle));
                    handleToggleOutputEvent(pinToToggle);
                    break;

                case EventIdentifier.StartSequencerRequest:
                    log.Debug("Handling startTestSequence ui event");
                    StartSequencerEvent sequencerEvent = (StartSequencerEvent)newEvent;
                    handleStartSequencerEvent(sequencerEvent);
                    break;

                case EventIdentifier.UpdateOutputRequest:
                    log.Debug("Handling updateOutput UI Event");
                    UpdateOutputEvent updateOutput = (UpdateOutputEvent)newEvent;
                    DIOPins           pinToChange  = updateOutput._pinToUpdate;
                    bool shouldSetHigh             = updateOutput._shouldBeHigh;
                    handleUpdateOutputEvent(pinToChange, shouldSetHigh);
                    break;

                default:
                    break;
                }
            }
        }