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; } }
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; } }