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);
            //}));
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
 private void generateOutput()
 {
     analogOutputWriter.BeginWriteMultiSample(true, buffer, null, null);
     //analogOutputWriter.WriteMultiSample(true, buffer);
 }