/// <summary> /// Start a constant output by the DAQ device. This function starts a task named "OutputTask", /// Don't forget to stop it when it's no longer needed. /// </summary> /// <param name="voltage">the requested voltage to apply</param> public void StartConstantOutputTask(double voltage) { int samplesPerChannel = 2500; int sampleRate = 2500; // // generate output array // m_functionGenerator = new FunctionGenerator(samplesPerChannel, voltage, voltage); // // get the properties required for the output task // ContinuousAOTaskProperties outputProperties = new ContinuousAOTaskProperties(null, sampleRate, samplesPerChannel, voltage); // // create the output task // m_outputTask = m_daqController.CreateContinuousAOTask(outputProperties); // // create the writer of the output task // writer = new AnalogSingleChannelWriter(m_outputTask.Stream); // // write static voltage // writer.WriteMultiSample(true, m_functionGenerator.ConstWave); }
/// <summary> /// Create continuous Analog Out Task /// </summary> /// <param name="properties">The properties of the task</param> /// <returns>The task to be activated</returns> public Task CreateContinuousAOTask(ContinuousAOTaskProperties properties) { // // Create analog output task with the specified name // Task analogOutputTask = new Task(c_refContAOTask); // // Define a voltage channel // AOChannel analogChannel = analogOutputTask.AOChannels.CreateVoltageChannel(Settings.Default.DAQPhysicalChannelName_IVOutput, string.Empty, -properties.Amplitude, properties.Amplitude, AOVoltageUnits.Volts); // // Configure sampling clock, rate, number of samples // analogOutputTask.Timing.ConfigureSampleClock(string.Empty, properties.SampleRate, SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, properties.SamplesPerChannel); // // allow regeneration of the writing process - that means the output will keep working until we stop or change it. // analogOutputTask.Stream.WriteRegenerationMode = WriteRegenerationMode.AllowRegeneration; // // verify task // analogOutputTask.Control(TaskAction.Verify); return analogOutputTask; }
/// <summary> /// Get Continuous Analog Output Task /// </summary> /// <param name="settings"></param> /// <returns></returns> private Task GetContinuousAOTask(IVSettings settings) { // // get the properties required for the output task // ContinuousAOTaskProperties outputProperties = new ContinuousAOTaskProperties(null, settings.IVGeneralSettings.OutputUpdateRate, settings.IVGeneralSettings.SamplesPerCycle, settings.IVGeneralSettings.VoltageAmplitude); // // return the output task // return m_daqController.CreateContinuousAOTask(outputProperties); }