private void buttonSmoothSet0V_Click(object sender, EventArgs e) { IsLockEnabled = false; buttonToggleLaserLock.Text = "Lock"; LaserLockPID.ClearHistory(); //BeginInvoke((Action)(() => //{ double currentPiezo = ReaderAI.ReadSingleSample(); int numberOfSamples = 1000; double[] outputSteps = Enumerable.Range(0, numberOfSamples).Select(x => 0 + (currentPiezo - 0) * ((double)x / (numberOfSamples - 1))).Reverse().ToArray(); WriterAO.BeginWriteMultiSample(true, outputSteps, null, null); //})); }
public void WriteWaveformAnalogChannel(string lines, string name, int freq, int samples, int cycles, string sigtype, double ampl, double min, double max) { Task analogWriteTask = new Task(); AOChannel ch; if (max == 0) { max = 10; } try { // Create the task and channel //myTask = New Task() ch = analogWriteTask.AOChannels.CreateVoltageChannel(lines, "", min, max, AOVoltageUnits.Volts); // Verify the task before doing the waveform calculations analogWriteTask.Control(TaskAction.Verify); // Calculate some waveform parameters and generate data clsFunctionGenerator fGen = new clsFunctionGenerator(analogWriteTask.Timing, freq.ToString(), samples.ToString(), cycles.ToString(), sigtype, ampl.ToString()); // Configure the sample clock with the calculated rate analogWriteTask.Timing.ConfigureSampleClock("", fGen.fgResultingSampleClockRate, SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 1000); // Write the data to the buffer AnalogSingleChannelWriter writer = new AnalogSingleChannelWriter(analogWriteTask.Stream); writer.WriteMultiSample(false, fGen.fgData); IAsyncResult res; res = writer.BeginWriteMultiSample(false, fGen.fgData, _WriteAnalogChannelComplete, 0); //Start writing out data analogWriteTask.Start(); analogWriteTask.Stop(); } catch (DaqException ex) { DaqError(ex.Message); } finally { analogWriteTask.Dispose(); } }
private void generateOutput() { analogOutputWriter.BeginWriteMultiSample(true, buffer, null, null); //analogOutputWriter.WriteMultiSample(true, buffer); }