/// <summary> /// creates a new read channel suckaz /// </summary> /// <param name="channelName"></param> /// <param name="isCounter"></param> public void CreateReadTask() { DestroyReaderTask(); ReaderWaitHandle = new System.Threading.ManualResetEvent(true); ReaderTask = new Task("IntensityReader"); ReaderTask.SynchronizeCallbacks = SynchronizeCallbacks; ReaderTask.Stream.Timeout = Timeout; // Creates Input Channel task after checking channel type string cname = new String(ChannelName.Where(Char.IsLetter).ToArray()); if (!IsCounter) { this.ReaderTask.AIChannels.CreateVoltageChannel(ChannelName, "IntensityReader " + cname, AITerminalConfiguration.Differential, -10, 10, AIVoltageUnits.Volts); AnalogReader = new AnalogMultiChannelReader(ReaderTask.Stream); AnalogReader.SynchronizeCallbacks = SynchronizeCallbacks; } else { this.ReaderTask.CIChannels.CreateCountEdgesChannel(ChannelName, "CounterReader " + cname, CICountEdgesActiveEdge.Rising, 10, CICountEdgesCountDirection.Up); this.ReaderTask.CIChannels.All.CountEdgesTerminal = InputTerminal; this.ReaderTask.CIChannels.All.CountEdgesCountResetTerminal = "/CARD/PFI0"; CounterReader = new CounterMultiChannelReader(ReaderTask.Stream); CounterReader.SynchronizeCallbacks = SynchronizeCallbacks; } LastReadDataChunk = null; // configureing the clock. ReaderTask.Timing.ConfigureSampleClock(TimeBaseTerminal, SamplingFrequency, SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples); ReaderTask.Control(TaskAction.Verify); }