private void SendOutputValue(LiveChannel channel)
 {
     dataAquisition.SetChannelValue(channel.Channel, channel.Value);
 }
Example #2
0
        // Raises StatusChangedEvent every millisecond and runs abort once abort condition met
        private void OnTimedEvent(DateTime time)
        {
            ObservableCollection <Channel> Channels = config.Config.Channels;
            ObservableCollection <Event>   currSequence;

            if (abortnow == true)
            {
                currSequence = abortSequence;
            }
            else
            {
                currSequence = primarySequence;
            }

            foreach (Event curr in primarySequence)
            {
                if (Math.Abs((curr.StartTime + sequenceStartTime).TotalMilliseconds - time.TimeOfDay.TotalMilliseconds) < 1.5)
                {
                    var     channelName = curr.ChannelName;
                    Channel channel     = null;
                    foreach (Channel chan in Channels)
                    {
                        if (chan.Name.Equals(channelName))
                        {
                            channel = chan;
                            break;
                        }
                    }
                    if (channel == null)
                    {
                        continue;
                    }
                    switch (curr)
                    {
                    case OutputEvent output:
                        Service.SetChannelValue(channel, 1);
                        break;

                    case AbortCondition abort:
                        sequenceStartTime = DateTime.Now.TimeOfDay;
                        abortConditions.Add(abort);
                        break;
                    }
                }

                if (Math.Abs((curr.EndTime + sequenceStartTime).TotalMilliseconds - time.TimeOfDay.TotalMilliseconds) < 10)
                {
                    var     channelName = curr.ChannelName;
                    Channel channel     = null;
                    foreach (Channel chan in Channels)
                    {
                        if (chan.Name.Equals(channelName))
                        {
                            channel = chan;
                            break;
                        }
                    }
                    if (channel == null)
                    {
                        continue;
                    }
                    switch (curr)
                    {
                    case OutputEvent output:
                        Service.SetChannelValue(channel, 0);
                        break;

                    case AbortCondition abort:
                        abortnow = false;
                        abortConditions.Remove(abort);
                        break;
                    }
                }
            }
        }