public void StartMeasurement(object sender, DoWorkEventArgs e)
        {
            AllEventsHandler.Instance.OnIV_MeasurementsStateChanged(sender, new IV_MeasurementStateChanged_EventArgs(true));

            var worker = sender as BackgroundWorker;

            switch (_sourceMode)
            {
            case SourceMode.Voltage:
            {
                _Device.SwitchON();
                for (double V = _StartValue; V <= _EndValue; V += _Step)
                {
                    if (worker.CancellationPending == true)
                    {
                        AllEventsHandler.Instance.OnIV_MeasurementsStateChanged(sender, new IV_MeasurementStateChanged_EventArgs(false));
                        e.Cancel = true;
                        break;
                    }
                    else
                    {
                        var X = V;
                        _Device.SetSourceVoltage(V);
                        var Y = _Device.MeasureCurrent(_NumberOfAverages, _TimeDelay);

                        if (!(double.IsNaN(X) || double.IsNaN(Y)))
                        {
                            AllEventsHandler.Instance.OnIV_PointReceived(null, new IV_PointReceived_EventArgs(X, Y));

                            worker.ReportProgress((int)(Math.Abs(1.0 - (_EndValue - X) / _EndValue) * 100 + 1));
                        }
                    }
                }
                _Device.SetSourceVoltage(0.0);
                _Device.SwitchOFF();
                worker.ReportProgress(0);
                AllEventsHandler.Instance.OnIV_MeasurementsStateChanged(sender, new IV_MeasurementStateChanged_EventArgs(false));
            } break;

            case SourceMode.Current:
            {
                _Device.SwitchON();
                for (double I = _StartValue; I <= _EndValue; I += _Step)
                {
                    if (worker.CancellationPending == true)
                    {
                        AllEventsHandler.Instance.OnIV_MeasurementsStateChanged(sender, new IV_MeasurementStateChanged_EventArgs(false));
                        e.Cancel = true;
                        break;
                    }
                    else
                    {
                        _Device.SetSourceCurrent(I);
                        var X = _Device.MeasureVoltage(_NumberOfAverages, _TimeDelay);
                        var Y = I;

                        if (!(double.IsNaN(X) || double.IsNaN(Y)))
                        {
                            AllEventsHandler.Instance.OnIV_PointReceived(null, new IV_PointReceived_EventArgs(X, Y));
                            worker.ReportProgress((int)(Math.Abs(1.0 - (_EndValue - X) / _EndValue) * 100 + 1));
                        }
                    }
                }
                _Device.SetSourceCurrent(0.0);
                _Device.SwitchOFF();
                worker.ReportProgress(0);
                AllEventsHandler.Instance.OnIV_MeasurementsStateChanged(sender, new IV_MeasurementStateChanged_EventArgs(false));
            } break;

            default:
                break;
            }
        }
Esempio n. 2
0
        private void OnMotionPositionMeasured(object sender, Motion_EventArgs e)
        {
            switch (_MeasureMode)
            {
            case KEITHLEY_2601A_MeasureMode.Voltage:
            {
                var measuredVoltage = _MeasureDevice.MeasureVoltage(_NumberOfAverages, _TimeDelay);
                if (!(double.IsNaN(e.Position) || double.IsNaN(measuredVoltage)))
                {
                    AllEventsHandler.Instance.OnTimeTracePointReceived(null, new TimeTracePointReceived_EventArgs(e.Position, measuredVoltage));
                }
            } break;

            case KEITHLEY_2601A_MeasureMode.Current:
            {
                var measuredCurrent = _MeasureDevice.MeasureCurrent(_NumberOfAverages, _TimeDelay);
                if (!(double.IsNaN(e.Position) || double.IsNaN(measuredCurrent)))
                {
                    AllEventsHandler.Instance.OnTimeTracePointReceived(null, new TimeTracePointReceived_EventArgs(e.Position, measuredCurrent));
                }
            } break;

            case KEITHLEY_2601A_MeasureMode.Resistance:
            {
                switch (_SourceMode)
                {
                case KEITHLEY_2601A_SourceMode.Voltage:
                {
                    var measuredResistance = _MeasureDevice.MeasureResistance(_ValueThroughTheStructure, _NumberOfAverages, _TimeDelay, Hardware.SourceMode.Voltage);
                    if (!(double.IsNaN(e.Position) || double.IsNaN(measuredResistance)))
                    {
                        AllEventsHandler.Instance.OnTimeTracePointReceived(null, new TimeTracePointReceived_EventArgs(e.Position, measuredResistance));
                    }
                } break;

                case KEITHLEY_2601A_SourceMode.Current:
                {
                    var measuredResistance = _MeasureDevice.MeasureResistance(_ValueThroughTheStructure, _NumberOfAverages, _TimeDelay, Hardware.SourceMode.Current);
                    if (!(double.IsNaN(e.Position) || double.IsNaN(measuredResistance)))
                    {
                        AllEventsHandler.Instance.OnTimeTracePointReceived(null, new TimeTracePointReceived_EventArgs(e.Position, measuredResistance));
                    }
                } break;

                default:
                    break;
                }
            } break;

            case KEITHLEY_2601A_MeasureMode.Power:
            {
                switch (_SourceMode)
                {
                case KEITHLEY_2601A_SourceMode.Voltage:
                {
                    var measuredPower = _MeasureDevice.MeasurePower(_ValueThroughTheStructure, _NumberOfAverages, _TimeDelay, Hardware.SourceMode.Voltage);
                    if (!(double.IsNaN(e.Position) || double.IsNaN(measuredPower)))
                    {
                        AllEventsHandler.Instance.OnTimeTracePointReceived(null, new TimeTracePointReceived_EventArgs(e.Position, measuredPower));
                    }
                } break;

                case KEITHLEY_2601A_SourceMode.Current:
                {
                    var measuredPower = _MeasureDevice.MeasurePower(_ValueThroughTheStructure, _NumberOfAverages, _TimeDelay, Hardware.SourceMode.Current);
                    if (!(double.IsNaN(e.Position) || double.IsNaN(measuredPower)))
                    {
                        AllEventsHandler.Instance.OnTimeTracePointReceived(null, new TimeTracePointReceived_EventArgs(e.Position, measuredPower));
                    }
                } break;

                default:
                    break;
                }
            } break;

            default:
                break;
            }
        }