private void ConfigureReadDI(int numberOfMeasurements, double sampleRate, bool triggerSense) { readDIsTask = new Task("readDIsTask"); foreach (string inputName in digitalInputs) { DigitalInputChannel channel = (DigitalInputChannel)Environs.Hardware.DigitalInputChannels[inputName]; channel.AddToTask(readDIsTask); } SampleClockActiveEdge clockEdge = SampleClockActiveEdge.Rising; DigitalEdgeStartTriggerEdge triggerEdge = triggerSense ? DigitalEdgeStartTriggerEdge.Rising : DigitalEdgeStartTriggerEdge.Falling; // Get the device that the analog inputs are on so we can use sample clock as well to sync timing string device = ((AnalogInputChannel)Environs.Hardware.AnalogInputChannels[analogInputs[0]]).Device; readDIsTask.Timing.ConfigureSampleClock(device + "/ai/SampleClock", sampleRate, clockEdge, SampleQuantityMode.FiniteSamples, numberOfMeasurements); readDIsTask.Triggers.StartTrigger.ConfigureDigitalEdgeTrigger(device + "/ai/StartTrigger", triggerEdge); readDIsTask.Control(TaskAction.Verify); digitalReader = new DigitalMultiChannelReader(readDIsTask.Stream); // Commiting now apparently saves time when we actually run the task readDIsTask.Control(TaskAction.Commit); }
private void ConfigureReadAI(int numberOfMeasurements, double sampleRate, bool triggerSense, bool autostart) //AND CAVITY VOLTAGE!!! { readAIsTask = new Task("readAIsTask"); foreach (string inputName in analogInputs) { AnalogInputChannel channel = (AnalogInputChannel)Environs.Hardware.AnalogInputChannels[inputName]; channel.AddToTask(readAIsTask, 0, 10); } SampleClockActiveEdge clockEdge = SampleClockActiveEdge.Rising; DigitalEdgeStartTriggerEdge triggerEdge = triggerSense ? DigitalEdgeStartTriggerEdge.Rising : DigitalEdgeStartTriggerEdge.Falling; if (!autostart) { // Use internal clock readAIsTask.Timing.ConfigureSampleClock("", sampleRate, clockEdge, SampleQuantityMode.FiniteSamples, numberOfMeasurements); readAIsTask.Triggers.StartTrigger.ConfigureDigitalEdgeTrigger(trigger, triggerEdge); } readAIsTask.Control(TaskAction.Verify); analogReader = new AnalogMultiChannelReader(readAIsTask.Stream); // Commiting now apparently saves time when we actually run the task readAIsTask.Control(TaskAction.Commit); }