Beispiel #1
0
        /**
         * Update_button_Click
         *
         * Apply settings to signal generator
         */
        private void Update_button_Click(object sender, EventArgs e)
        {
            Imports.SweepType       sweepType  = Imports.SweepType.PS3000A_UP;
            Imports.ExtraOperations operations = Imports.ExtraOperations.PS3000A_ES_OFF;

            uint shots  = 0;
            uint sweeps = 0;

            Imports.SigGenTrigType   triggerType   = Imports.SigGenTrigType.PS3000A_SIGGEN_RISING;
            Imports.SigGenTrigSource triggerSource = Imports.SigGenTrigSource.PS3000A_SIGGEN_NONE;

            short  extInThreshold = 0;
            double stopFreq;
            double startFreq;
            double increment;
            double dwellTime;
            int    offset;
            uint   pkToPk;

            try
            {
                startFreq = Convert.ToDouble(startFrequencyTextBox.Text);
                pkToPk    = Convert.ToUInt32(peatkToPeakVoltageTextBox.Text) * 1000;
                offset    = Convert.ToInt32(offsetVoltageTextBox.Text) * 1000;
            }
            catch
            {
                MessageBox.Show("Error with start frequency, offset and/or pktopk", "INVALID VALUES", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (sweepCheckBox.Checked == true)
            {
                try
                {
                    stopFreq  = Convert.ToDouble(stopFreqTextBox.Text);
                    increment = Convert.ToDouble(frequencyIncrementTextBox.Text);
                    dwellTime = Convert.ToDouble(timeIncrementTextBox.Text);
                    sweepType = (Imports.SweepType)(sweepTypeComboBox.SelectedIndex);
                }
                catch
                {
                    MessageBox.Show("Sweep values are incorrect", "INCORRECT VALUES", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }
            else
            {
                stopFreq  = startFreq;
                increment = 0;
                dwellTime = 0;
                sweepType = Imports.SweepType.PS3000A_UP;
            }

            if (sigToAWG.Checked == true)
            {
                Imports.IndexMode indexMode = Imports.IndexMode.PS3000A_SINGLE;
                int    waveformsize         = 0;
                string line;
                System.IO.StreamReader file;

                short[] waveform = new short[maxArbitraryWaveformSize];

                try
                {
                    file = new System.IO.StreamReader(fileNameTextBox.Text);
                }
                catch
                {
                    MessageBox.Show("Cannot open file", "Error file", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                while ((line = file.ReadLine()) != null && waveformsize < maxArbitraryWaveformSize)
                {
                    try
                    {
                        waveform[waveformsize] = Convert.ToInt16(line);
                    }
                    catch
                    {
                        if (Convert.ToInt32(line) > Int16.MaxValue)
                        {
                            waveform[waveformsize] = Int16.MaxValue;
                        }
                        else
                        {
                            waveform[waveformsize] = Int16.MinValue;
                        }
                    }

                    waveformsize++;
                }

                file.Close();


                Array.Resize(ref waveform, waveformsize);

                // As frequency depends on the number or points need to use delta phase.
                // Use the SigGenFrequencyToPhase method to calculate this.

                uint startDeltaPhase;
                uint stopDeltaPhase;
                uint deltaPhaseIncrement;
                uint dwellCount;


                status = Imports.SigGenFrequencyToPhase(handle, startFreq, indexMode, (uint)waveformsize, out startDeltaPhase);
                status = Imports.SigGenFrequencyToPhase(handle, stopFreq, indexMode, (uint)waveformsize, out stopDeltaPhase);
                status = Imports.SigGenFrequencyToPhase(handle, increment, indexMode, (uint)waveformsize, out deltaPhaseIncrement);
                status = Imports.SigGenFrequencyToPhase(handle, (double)(1.0 / dwellTime), indexMode, (uint)waveformsize, out dwellCount);

                status = Imports.SetSigGenArbitrary(handle, offset, pkToPk, startDeltaPhase, stopDeltaPhase, deltaPhaseIncrement, dwellCount, waveform, waveformsize, sweepType,
                                                    operations, indexMode, shots, sweeps, triggerType, triggerSource, extInThreshold);

                if (status != StatusCodes.PICO_OK)
                {
                    MessageBox.Show("Error SetSigGenArbitrary error code :" + status.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                Imports.WaveType waveType = Imports.WaveType.PS3000A_SINE;

                if (signalTypeComboBox.SelectedIndex < (int)Imports.WaveType.PS3000A_MAX_WAVE_TYPES)
                {
                    waveType = (Imports.WaveType)signalTypeComboBox.SelectedIndex;

                    if (waveType == Imports.WaveType.PS3000A_DC_VOLTAGE)
                    {
                        pkToPk = 0;
                    }
                }
                else
                {
                    operations = (Imports.ExtraOperations)(signalTypeComboBox.SelectedIndex - 8);
                }


                status = Imports.SetSigGenBuiltInV2(handle, offset, pkToPk, waveType, startFreq, stopFreq, increment, dwellTime, sweepType,
                                                    operations, shots, sweeps, triggerType, triggerSource, extInThreshold);

                if (status != StatusCodes.PICO_OK)
                {
                    MessageBox.Show("Error SetSigGenBuiltInV2 error code :" + status.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
Beispiel #2
0
        private void Update_button_Click(object sender, EventArgs e)
        {
            Imports.SweepType       sweeptype  = Imports.SweepType.PS4000A_UP;
            Imports.ExtraOperations operations = Imports.ExtraOperations.PS4000A_ES_OFF;
            uint shots  = 0;
            uint sweeps = 0;

            Imports.SigGenTrigType   triggertype   = Imports.SigGenTrigType.PS4000A_SIGGEN_RISING;
            Imports.SigGenTrigSource triggersource = Imports.SigGenTrigSource.PS4000A_SIGGEN_NONE;
            short  extinthreshold = 0;
            double stopfreq;
            double startfreq;
            double increment;
            double dwelltime;
            int    offset;
            uint   pktopk;


            try
            {
                startfreq = Convert.ToDouble(start_freq.Text);
                pktopk    = Convert.ToUInt32(pk_pk.Text) * 1000;
                offset    = Convert.ToInt32(offsetvoltage.Text) * 1000;
            }
            catch
            {
                MessageBox.Show("Error with start frequency, offset and/or pktopk", "INVALID VALUES", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (Sweep.Checked)
            {
                try
                {
                    stopfreq  = Convert.ToDouble(stop_freq.Text);
                    increment = Convert.ToDouble(freq_incre.Text);
                    dwelltime = Convert.ToDouble(time_incre.Text);
                    sweeptype = (Imports.SweepType)(sweep_type.SelectedIndex);
                }
                catch
                {
                    MessageBox.Show("Sweep values are incorrect", "INCORRECT VALUES", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }
            else
            {
                stopfreq  = startfreq;
                increment = 0;
                dwelltime = 0;
                sweeptype = Imports.SweepType.PS4000A_UP;
            }

            if (SIGtoAWG.Checked)
            {
                Imports.IndexMode index = Imports.IndexMode.PS4000A_SINGLE;
                int    waveformsize     = 0;
                string line;
                System.IO.StreamReader file;
                short[] waveform = new short[Imports.SIG_GEN_BUFFER_SIZE];

                try
                {
                    file = new System.IO.StreamReader(file_name.Text);
                }
                catch
                {
                    MessageBox.Show("Cannot open file", "Error file", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                while ((line = file.ReadLine()) != null && waveformsize < (Imports.SIG_GEN_BUFFER_SIZE))
                {
                    waveform[waveformsize] = Convert.ToInt16(line);
                    waveformsize++;
                }

                file.Close();


                Array.Resize(ref waveform, waveformsize);

                // As frequency depends on the number or points need to use delta phase
                uint startdeltaphase = (uint)(((1.0 * startfreq * waveformsize) / Imports.SIG_GEN_BUFFER_SIZE) * (1.0 * Imports.AWG_PHASE_ACCUMULATOR / Imports.AWG_DAC_FREQUENCY));
                uint stopdeltaphase  = (uint)(((1.0 * stopfreq * waveformsize) / Imports.SIG_GEN_BUFFER_SIZE) * (1.0 * Imports.AWG_PHASE_ACCUMULATOR / Imports.AWG_DAC_FREQUENCY));
                uint _increment      = (uint)(((1.0 * increment * waveformsize) / Imports.SIG_GEN_BUFFER_SIZE) * (1.0 * Imports.AWG_PHASE_ACCUMULATOR / Imports.AWG_DAC_FREQUENCY));
                uint dwell           = (uint)(dwelltime);



                if ((status = Imports.SetSigGenArbitrary(handle,
                                                         offset,
                                                         pktopk,
                                                         startdeltaphase,
                                                         stopdeltaphase,
                                                         _increment,
                                                         dwell,
                                                         ref waveform[0],
                                                         waveformsize,
                                                         sweeptype,
                                                         operations,
                                                         index,
                                                         shots,
                                                         sweeps,
                                                         triggertype,
                                                         triggersource,
                                                         extinthreshold)) != 0)
                {
                    MessageBox.Show("Error SetSigGenArbitray error code :" + status.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                Imports.WaveType wavetype = Imports.WaveType.PS4000A_SINE;

                if (signal_type.SelectedIndex < 9)
                {
                    if ((wavetype = (Imports.WaveType)(signal_type.SelectedIndex)) == Imports.WaveType.PS4000A_DC_VOLTAGE)
                    {
                        pktopk = 0;
                    }
                }
                else
                {
                    operations = (Imports.ExtraOperations)(signal_type.SelectedIndex - 8);
                }


                if ((status = Imports.SetSigGenBuiltIn(handle,
                                                       offset,
                                                       pktopk,
                                                       wavetype,
                                                       startfreq,
                                                       stopfreq,
                                                       increment,
                                                       dwelltime,
                                                       sweeptype,
                                                       operations,
                                                       shots,
                                                       sweeps,
                                                       triggertype,
                                                       triggersource,
                                                       extinthreshold
                                                       )) != 0)
                {
                    MessageBox.Show("Error SetSigGenBuiltIn error code :" + status.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }