Example #1
0
        public void ConnectBoard()
        {
            try
            {
                switch (BoardType)
                {
                case BoardType.JYPCI69527:
                    AITask = new JYPCI69527AITaskImpl(BoardId);
                    AOTask = new JYPCI69527AOTaskImpl(BoardId);
                    break;

                case BoardType.JYPXI69527:
                    AITask = new JYPXI69527AITaskImpl(BoardId);
                    AOTask = new JYPXI69527AOTaskImpl(BoardId);
                    break;

                case BoardType.JYUSB61902:
                    AITask = new JYUSB61902AITaskImpl(BoardId);
                    AOTask = new JYUSB61902AOTaskImpl(BoardId);
                    break;
                }
                this.AppStateMachine.Status = BoardStatus.Connected;
            }
            catch (Exception)
            {
                this.AppStateMachine.Status = BoardStatus.Disconnect;
                throw;
            }
        }
Example #2
0
        public void Start()
        {
            if (null == tableLayoutPanel_waveConfig.Controls[0])
            {
                return;
            }
            double    sampleRate    = (double)numericUpDown_sampleRate.Value;
            Generator waveGenerator = tableLayoutPanel_waveConfig.Controls[0] as Generator;

            AITask.AITask input  = _globalInfo.AITask;
            AOTask.AOTask output = _globalInfo.AOTask;
            output.SetUpdateRate(sampleRate);
            input.SetSampleRate(sampleRate);
            double channelRange = waveGenerator.GetAmplitude();

            output.AddChannel(comboBox_aoChannel.SelectedIndex, -1 * channelRange, channelRange);
            input.AddChannel(comboBox_refChannel.SelectedIndex, -1 * channelRange, channelRange);
            input.AddChannel(comboBox_testChannel.SelectedIndex, -1 * channelRange, channelRange);

            double[] outData = waveGenerator.Generate();

            output.SetSamplesToUpdate(outData.Length);
            double outTime = outData.Length / output.GetUpdateRate();

            input.SetSamplesToAcquire((int)(outTime * input.GetSampleRate() * GlobalInfo.ExtraReadTime));
            output.WriteData(outData, -1);

            input.Start();
            output.Start();

            double[,] readWaveform = new double[input.GetSamplesToAcquire(), 2];
            input.ReadData(ref readWaveform, readWaveform.GetLength(0), GlobalInfo.ReadTimeOut);

            double[,] plotData = new double[readWaveform.GetLength(1), readWaveform.GetLength(0)];
            ArrayManipulation.Transpose(readWaveform, ref plotData);
//            easyChart_data.Plot(plotData);

            _globalInfo.Mainform.Invoke(new Action <double[, ], double, double>(easyChart_data.Plot), plotData, 0, 1);

            _refData  = new double[plotData.GetLength(1)];
            _testData = new double[plotData.GetLength(1)];
            Buffer.BlockCopy(plotData, 0, _refData, 0, _refData.Length * sizeof(double));
            Buffer.BlockCopy(plotData, _testData.Length * sizeof(double), _testData, 0,
                             _testData.Length * sizeof(double));

            double[] spectrum = new double[_testData.Length / 2];
            double   df;

            Spectrum.PowerSpectrum(_testData, input.GetSampleRate(), ref spectrum, out df);
//            easyChart_spectrum.Plot(spectrum.Take(1000).ToArray(), 0, df);
            _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_spectrum.Plot), spectrum, 0, df);
            _analyzeSize = (uint)Math.Ceiling(outTime * _globalInfo.AITask.GetSampleRate());
        }
Example #3
0
        private void TriggerConfigForm_Load(object sender, EventArgs e)
        {
            AITask.AITask aiTask = _globalInfo.AITask;
            InitComboBoxItemsAndValue(metroComboBox_triggerType, aiTask.GetTriggerTypes(), aiTask.TriggerType);
            InitComboBoxItemsAndValue(metroComboBox_triggerMode, aiTask.GetTriggerModes(), aiTask.TriggerMode);

            InitComboBoxItemsAndValue(metroComboBox_analogTriggerChannel, aiTask.GetAnalogTriggerSources(), aiTask.AnalogTriggerSource);
            InitComboBoxItemsAndValue(metroComboBox_analogTriggerCondition, aiTask.GetAnalogTriggerConditions(), aiTask.AnalogTriggerCondition);
            InitTextBoxValue(textBox_threshold, double.IsNaN(aiTask.AnalogTriggerThreshold) ? null : aiTask.AnalogTriggerThreshold.ToString());

            InitComboBoxItemsAndValue(metroComboBox_digitalSource, aiTask.GetDigitalTriggerSources(), aiTask.DigitalTriggerSource);
            InitComboBoxItemsAndValue(metroComboBox_digitalEdge, aiTask.GetDigitalTriggerEdge(), aiTask.DigitalTriggerEdge);
        }
Example #4
0
        public void Start()
        {
            double sampleRate      = (double)numericUpDown_sampleRate.Value;
            double amplitude       = (double)numericUpDown_amplitude.Value;
            double targetFrequency = (double)numericUpDown_targetFreq.Value;
            double duration        = (double)numericUpDown_Duration.Value / 1000;

            AITask.AITask input  = _globalInfo.AITask;
            AOTask.AOTask output = _globalInfo.AOTask;

            output.SetUpdateRate(sampleRate);
            input.SetSampleRate(sampleRate);
            double channelRange = (double)(numericUpDown_amplitude.Value);

            output.AddChannel(comboBox_aoChannel.SelectedIndex, -1 * channelRange, channelRange);
            input.AddChannel(comboBox_testChannel.SelectedIndex, -1 * channelRange, channelRange);

            double[] outData = AudioGenerator.SingleToneWaveform(output.GetUpdateRate(),
                                                                 (uint)(output.GetUpdateRate() * duration), amplitude, targetFrequency, 0);
            output.SetSamplesToUpdate(outData.Length);
            double outTime = outData.Length / output.GetUpdateRate();

            input.SetSamplesToAcquire((int)(outTime * input.GetSampleRate() * GlobalInfo.ExtraReadTime));
            output.WriteData(outData, -1);

            input.Start();
            output.Start();

            _testData = new double[input.GetSamplesToAcquire()];
            input.ReadData(ref _testData, _testData.Length, GlobalInfo.ReadTimeOut);
            //Added by Way
            output.Stop();
            input.Stop();
//            easyChart_data.Plot(_testData);
            _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_data.Plot), _testData, 0, 1);

            double[] spectrum = new double[_testData.Length / 2];
            double   df;

            //Change unit to dBm
            Spectrum.PowerSpectrum(_testData, input.GetSampleRate(), ref spectrum, out df, SpectrumUnits.V2);
            _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_spectrum.Plot), spectrum, 0, df);

//            double amp, thd, nr, thdPlusNRatio;
//            double[] harmonicPower;
//            SeeSharpTools.JY.Audio.AudioAnalyzer.AnalyzeSingleToneWave(readWaveform,
//                targetFrequency, sampleRate, out amp, out thd, out nr, out thdPlusNRatio,
//                out harmonicPower);
            _analyzeSize = (uint)Math.Ceiling(outTime * input.GetSampleRate());
        }
Example #5
0
        public void Start()
        {
            if (null == tableLayoutPanel_waveConfig.Controls[0])
            {
                return;
            }
            double    sampleRate    = (double)numericUpDown_sampleRate.Value;
            Generator waveGenerator = tableLayoutPanel_waveConfig.Controls[0] as Generator;

            dataGridView_result.Rows.Clear();

            AITask.AITask input  = _globalInfo.AITask;
            AOTask.AOTask output = _globalInfo.AOTask;
            output.SetUpdateRate(sampleRate);
            input.SetSampleRate(sampleRate);
            double channelRange = waveGenerator.GetAmplitude();

            output.AddChannel(comboBox_aoChannel.SelectedIndex, -1 * channelRange, channelRange);
            input.AddChannel(comboBox_refChannel.SelectedIndex, -1 * channelRange, channelRange);
            input.AddChannel(comboBox_testChannel.SelectedIndex, -1 * channelRange, channelRange);

            double[] outData = waveGenerator.Generate();

            output.SetSamplesToUpdate(outData.Length);
            double outTime = outData.Length / output.GetUpdateRate();

            input.SetSamplesToAcquire((int)(outTime * input.GetSampleRate() * GlobalInfo.ExtraReadTime));
            output.WriteData(outData, -1);

            input.Start();
            output.Start();

            double[,] readWaveform = new double[input.GetSamplesToAcquire(), 2];
            input.ReadData(ref readWaveform, readWaveform.GetLength(0), GlobalInfo.ReadTimeOut);
            double[,] plotData = new double[readWaveform.GetLength(1), readWaveform.GetLength(0)];
            ArrayManipulation.Transpose(readWaveform, ref plotData);
            _globalInfo.Mainform.Invoke(new Action <double[, ], double, double>(easyChart_waveform.Plot), plotData, 0, 1);

            _testData = new double[plotData.GetLength(1)];
            Buffer.BlockCopy(plotData, 0, _testData, 0, _testData.Length * sizeof(double));
            _refWaveform = waveGenerator.GetRefWaveform() as SteppedLevelSineWaveform;
//            double[] peakToPeak, thd, nr, thdPlusNr, rms;
//            SeeSharpTools.JY.Audio.AudioAnalyzer.AnalyzeSteppedLevelSineWaveform(testWaveData, refWaveform,
//                out peakToPeak, out thd, out nr, out thdPlusNr, out rms);

            _analyzeSize = _refWaveform.GetTotalPoints();
        }
        public void Start()
        {
            Generator waveGenerator = tableLayoutPanel_waveConfig.Controls[0] as Generator;
            double    sampleRate    = (double)numericUpDown_sampleRate.Value;

            AITask.AITask input  = _globalInfo.AITask;
            AOTask.AOTask output = _globalInfo.AOTask;
            output.SetUpdateRate(sampleRate);
            input.SetSampleRate(sampleRate);

            double[] outData = waveGenerator.GetWaveform().GetWaveData();

            double channelRange = (double)(waveGenerator.GetAmplitude());

            output.AddChannel(comboBox_aoChannel.SelectedIndex, -1 * channelRange, channelRange);
            input.AddChannel(comboBox_refChannel.SelectedIndex, -1 * channelRange, channelRange);
            input.AddChannel(comboBox_testChannel.SelectedIndex, -1 * channelRange, channelRange);

            output.SetSamplesToUpdate(outData.Length);
            double outTime = outData.Length / output.GetUpdateRate();

            input.SetSamplesToAcquire((int)(outTime * input.GetSampleRate() * GlobalInfo.ExtraReadTime));
            output.WriteData(outData, -1);
            input.Start();
            output.Start();
            double[,] readData = new double[input.GetSamplesToAcquire(), 2];
            input.ReadData(ref readData, input.GetSamplesToAcquire(), GlobalInfo.ReadTimeOut);
            _refData  = new double[readData.GetLength(0)];
            _testData = new double[readData.GetLength(0)];
            for (int i = 0; i < readData.GetLength(0); i++)
            {
                _refData[i]  = readData[i, 0];
                _testData[i] = readData[i, 1];
            }
            double[,] plotData = new double[2, readData.GetLength(0)];
            Buffer.BlockCopy(_refData, 0, plotData, 0, _refData.Length * sizeof(double));
            Buffer.BlockCopy(_testData, 0, plotData, _refData.Length * sizeof(double),
                             _testData.Length * sizeof(double));
//            easyChart_data.Plot(plotData);
            _globalInfo.Mainform.Invoke(new Action <double[, ], double, double>(easyChart_data.Plot), plotData, 0, 1);
            _refWaveform = waveGenerator.GetRefWaveform() as SteppedSineWaveform;
//            ArrayPair<double, double> crossTalk = SeeSharpTools.JY.Audio.AudioAnalyzer.AnalyzeSteppedSineCrosstalk(
//                refWaveForm, testWaveForm, _globalInfo.AITask.GetSampleRate(), frequencyMax, frequencyMin, steps, minCycle, minDuration, amplitude);

            _analyzeSize = _refWaveform.GetTotalPoints();
        }
Example #7
0
        public void Start()
        {
            if (null == tableLayoutPanel_waveConfig.Controls[0])
            {
                return;
            }
            double    sampleRate    = (double)numericUpDown_sampleRate.Value;
            Generator waveGenerator = tableLayoutPanel_waveConfig.Controls[0] as Generator;

            AITask.AITask input  = _globalInfo.AITask;
            AOTask.AOTask output = _globalInfo.AOTask;
            output.SetUpdateRate(sampleRate);
            input.SetSampleRate(sampleRate);
            double channelRange = waveGenerator.GetAmplitude();

            output.AddChannel(comboBox_aoChannel.SelectedIndex, -1 * channelRange, channelRange);
            input.AddChannel(comboBox_testChannel.SelectedIndex, -1 * channelRange, channelRange);

            double[] outData = waveGenerator.Generate();

            output.SetSamplesToUpdate(outData.Length);
            double outTime = outData.Length / output.GetUpdateRate();

            input.SetSamplesToAcquire((int)(outTime * input.GetSampleRate() * GlobalInfo.ExtraReadTime));
            output.WriteData(outData, -1);

            input.Start();
            output.Start();

            _testData = new double[input.GetSamplesToAcquire()];
            input.ReadData(ref _testData, _testData.Length, GlobalInfo.ReadTimeOut);
//            easyChart_testWaveform.Plot(_testData);

            _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_testWaveform.Plot), _testData, 0, 1);

            double[] spectrum = new double[_testData.Length / 2];
            double   df;

            Spectrum.PowerSpectrum(_testData, input.GetSampleRate(), ref spectrum, out df);
//            easyChart_spectrum.Plot(spectrum, 0, df);
            _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_spectrum.Plot), spectrum, 0, df);

            _analyzeSize = (uint)Math.Ceiling(outTime * _globalInfo.AITask.GetSampleRate());
        }
Example #8
0
        public void Start()
        {
            if (null == tableLayoutPanel_waveConfig.Controls[0])
            {
                return;
            }
            double    sampleRate    = (double)numericUpDown_sampleRate.Value;
            Generator waveGenerator = tableLayoutPanel_waveConfig.Controls[0] as Generator;

            AITask.AITask input  = _globalInfo.AITask;
            AOTask.AOTask output = _globalInfo.AOTask;
            output.SetUpdateRate(sampleRate);
            input.SetSampleRate(sampleRate);
            double channelRange = waveGenerator.GetAmplitude();

            output.AddChannel(comboBox_aoChannel.SelectedIndex, -1 * channelRange, channelRange);
            input.AddChannel(comboBox_testChannel.SelectedIndex, -1 * channelRange, channelRange);

            double[] outData = waveGenerator.Generate();

            output.SetSamplesToUpdate(outData.Length);
            double outTime = outData.Length / output.GetUpdateRate();

            input.SetSamplesToAcquire((int)(outTime * input.GetSampleRate() * GlobalInfo.ExtraReadTime));
            output.WriteData(outData, -1);

            input.Start();
            output.Start();

            _testData = new double[input.GetSamplesToAcquire()];
            input.ReadData(ref _testData, _testData.Length, GlobalInfo.ReadTimeOut);

//            easyChart_waveform.Plot(_testData);
            _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_waveform.Plot), _testData, 0, 1);

            input.Stop();
            output.Stop();
            _refWaveform = waveGenerator.GetRefWaveform() as MultiToneWaveform;
//            double peakToPeak, acRms, dcRms, max, min, tdPlusN;
//            double[] acPart, powerSpectrum, phaseSpectrum;
//            SeeSharpTools.JY.Audio.AudioAnalyzer.AnalyzeMultiToneWaveform(readWaveform, _refWaveform, _globalInfo.AITask.GetSampleRate(),
//                out peakToPeak, out acRms, out dcRms, out max, out min, out tdPlusN, out acPart, out powerSpectrum, out phaseSpectrum);
            _analyzeSize = _refWaveform.GetTotalPoints();
        }
Example #9
0
        public void Start()
        {
            if (null == tableLayoutPanel_waveConfig.Controls[0])
            {
                return;
            }
            double    sampleRate    = (double)numericUpDown_sampleRate.Value;
            Generator waveGenerator = tableLayoutPanel_waveConfig.Controls[0] as Generator;

            AITask.AITask input  = _globalInfo.AITask;
            AOTask.AOTask output = _globalInfo.AOTask;
            output.SetUpdateRate(sampleRate);
            input.SetSampleRate(sampleRate);
            double channelRange = waveGenerator.GetAmplitude();

            output.AddChannel(comboBox_aoChannel.SelectedIndex, -1 * channelRange, channelRange);
            input.AddChannel(comboBox_testChannel.SelectedIndex, -1 * channelRange, channelRange);

            double[] outData = waveGenerator.Generate();

            output.SetSamplesToUpdate(outData.Length);
            double outTime = outData.Length / output.GetUpdateRate();

            input.SetSamplesToAcquire((int)(outTime * input.GetSampleRate() * GlobalInfo.ExtraReadTime));
            output.WriteData(outData, -1);

            input.Start();
            output.Start();

            _testData = new double[input.GetSamplesToAcquire()];

            input.ReadData(ref _testData, input.GetSamplesToAcquire(), GlobalInfo.ReadTimeOut);

            _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_testWaveform.Plot), _testData,
                                        0, 1);

            //            double[] responseX, responseY, thdX, thdY;
            //            SeeSharpTools.JY.Audio.AudioAnalyzer.AnalyzeLogChripWave(readWaveform,
            //                (LogChirpWaveform) waveGenerator.GetRefWaveform(), input.GetSampleRate(), out responseX,
            //                out responseY, out thdX, out thdY);
            _refWaveform = (LogChirpWaveform)waveGenerator.GetRefWaveform();
            _analyzeSize = _refWaveform.GetTotalPoints();
        }