/** * 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); } } }
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); } } }