private void SendOutputValue(LiveChannel channel) { dataAquisition.SetChannelValue(channel.Channel, channel.Value); }
// 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; } } } }