Example #1
0
 public void _0001()
 {
     //Discarded unreachable code: IL_0002
     //IL_0003: Incompatible stack heights: 0 vs 1
     if (_ServerInstance == null || facadeInstance == null)
     {
         throw new InvalidOperationException("Must call Init first");
     }
     if (m_ManagerInstance == (SourceMode)0)
     {
         m_ManagerInstance = (SourceMode)1;
         stateInstance.Set();
         ThreadPool.QueueUserWorkItem(delegate
         {
             //Discarded unreachable code: IL_0002
             //IL_0003: Incompatible stack heights: 0 vs 1
             QueryDic();
         }, null);
     }
     else if (m_ManagerInstance == (SourceMode)2)
     {
         ExcludeDic();
         stateInstance.Set();
     }
 }
Example #2
0
        private void buttonOk_Click(object sender, EventArgs e)
        {
            paramName = comboBoxParameter.Text;

            if (radioSelectedElements.Checked)
            {
                writerMode = WriterMode.OnlySelected;
            }
            if (radioViewElements.Checked)
            {
                writerMode = WriterMode.OnCurrentView;
            }
            if (radioAllElements.Checked)
            {
                writerMode = WriterMode.AllInProject;
            }

            if (radioButtonWriteValue.Checked)
            {
                sourceMode = SourceMode.FixValue;
                source     = comboBoxValue.Text;
            }
            if (radioButtonWriteOtherPAram.Checked)
            {
                sourceMode = SourceMode.OtherParameter;
                source     = comboBoxSourceParameter.Text;
            }

            this.DialogResult = DialogResult.OK;
            this.Close();
        }
Example #3
0
 private void CancelDic()
 {
     //Discarded unreachable code: IL_0002
     //IL_0003: Incompatible stack heights: 0 vs 1
     while (m_ManagerInstance != 0)
     {
         if (!stateInstance.WaitOne(this._0001()))
         {
             _ = m_ManagerInstance;
             _ = 1;
         }
         if (m_ManagerInstance != (SourceMode)1)
         {
             continue;
         }
         int num = 0;
         FactoryInstance[] serverInstance = _ServerInstance;
         foreach (FactoryInstance factoryInstance in serverInstance)
         {
             if (factoryInstance._0002() || factoryInstance.ValidateError())
             {
                 num++;
             }
         }
         if (num == 0)
         {
             m_ManagerInstance = (SourceMode)0;
             stateInstance.Set();
         }
     }
 }
        public TimeTraceSingleMeasurement(string fileName, SourceMode sourceMode)
        {
            this._FileName = fileName;

            _OutputSingleMeasureStream = new FileStream(fileName, FileMode.Create, FileAccess.Write);
            _OutputSingleMeasureStreamWriter = new StreamWriter(_OutputSingleMeasureStream);

            switch (sourceMode)
            {
                case SourceMode.Voltage:
                    {
                        _Header = "Distance\tI";
                        _Subheader = "m\tA";
                    } break;
                case SourceMode.Current:
                    {
                        _Header = "Distance\tU";
                        _Subheader = "m\tV";
                    } break;
                default:
                    break;
            }

            _OutputSingleMeasureStreamWriter.WriteLine(_Header);
            _OutputSingleMeasureStreamWriter.WriteLine(_Subheader);

            _OutputSingleMeasureStreamWriter.Close();
            _OutputSingleMeasureStream.Close();

            _DataBuilder = new StringBuilder();

            _DataString = "{0}\t{1}";

            AllEventsHandler.Instance.TimetracePointReceived += OnTimeTracePointReceived;
        }
Example #5
0
 private void SetDefaults()
 {
     _instrument = _dataManager.AvailableInstruments.FirstOrDefault(x => x.Symbol == "INDU");
     _timeFrame  = _dataManager.GetAvailableTimeFrames(_instrument).First();
     _chartType  = ChartType.FastCandlestick;
     _sourceMode = SourceMode.AllVisibleSeries;
 }
Example #6
0
        public void _0001(ProccesorEventEntry item)
        {
            //Discarded unreachable code: IL_0002
            //IL_0003: Incompatible stack heights: 0 vs 1
            if (m_ManagerInstance != 0)
            {
                throw new InvalidOperationException("Can't re-initialize during playback");
            }
            if (m_RepositoryInstance != IntPtr.Zero)
            {
                InitDic();
                ManageDic();
            }
            stateInstance  = new AutoResetEvent(initialState: false);
            facadeInstance = item;
            int          selection = item._0001().StartDic((this._0001() + this._0002() - 1) / this._0002());
            MathOperator key;

            lock (m_WatcherInstance)
            {
                key = QueueBroadcasterFilter.ReflectDic(out m_RepositoryInstance, (IntPtr)_0003(), facadeInstance._0001(), stateInstance.SafeWaitHandle.DangerousGetHandle(), IntPtr.Zero, (QueueBroadcasterFilter.EventAttributes) 327680);
            }
            FacadePropertyStruct.VisitDic(key, "waveOutOpen");
            _ServerInstance   = new FactoryInstance[this._0002()];
            m_ManagerInstance = (SourceMode)0;
            for (int i = 0; i < this._0002(); i++)
            {
                _ServerInstance[i] = new FactoryInstance(m_RepositoryInstance, selection, facadeInstance, m_WatcherInstance);
            }
        }
 public static extern Result AddSourceWithOrientation(
     IntPtr ctx,
     SourceMode mode,
     float[] position,
     float[] front,
     float[] up,
     float radius,
     ref int sourceId,
     bool isAsync);
 public MeasureIV(double startVal, double endVal, double step, int numberOfAverages, double timeDelay, SourceMode deviceSourceMode, I_SMU device)
 {
     _StartValue       = startVal;
     _EndValue         = endVal;
     _Step             = step;
     _NumberOfAverages = numberOfAverages;
     _TimeDelay        = timeDelay;
     _sourceMode       = deviceSourceMode;
     _Device           = device;
 }
Example #9
0
        public static ISource CreateSource(SourceMode m, object args)
        {
            switch (m)
            {
            case SourceMode.Arduino:
                return(CreateArduinoSource(args));

            default:
                throw new Exception("Invalid SourceMode");
            }
        }
Example #10
0
        public static ISource CreateSource(SourceMode m, object args)
        {
            switch (m)
            {
            case SourceMode.Arduino:
                return(new Arduino.Source((Objects.ArduinoSourceFactoryArgs)args));

            default:
                throw new Exception("Invalid SourceMode");
            }
        }
Example #11
0
 public void _0002()
 {
     //Discarded unreachable code: IL_0002
     //IL_0003: Incompatible stack heights: 0 vs 1
     if (Monitor.TryEnter(_ClientInstance, 50))
     {
         errorInstance = (SourceMode)0;
         Monitor.Exit(_ClientInstance);
     }
     else if (m_IssuerInstance != null)
     {
         m_IssuerInstance.Abort();
         m_IssuerInstance = null;
     }
 }
Example #12
0
        private void SeSourceMode(SourceMode value, bool isForce = false)
        {
            if (_sourceMode != value || isForce)
            {
                _sourceMode = value;

                if (_sourceMode == SourceMode.WebCamStream)
                {
                    SetSourceWebCamStream(_webCamStream, true);
                }
                else
                {
                    SetWebCamTexture(_webCamTexture, true);
                }
            }
        }
Example #13
0
 private void ExcludeDic()
 {
     //Discarded unreachable code: IL_0002
     //IL_0003: Incompatible stack heights: 0 vs 1
     if (m_ManagerInstance == (SourceMode)2)
     {
         MathOperator mathOperator;
         lock (m_WatcherInstance)
         {
             mathOperator = QueueBroadcasterFilter.RestartDic(m_RepositoryInstance);
         }
         if (mathOperator != 0)
         {
             throw new FacadePropertyStruct(mathOperator, "waveOutRestart");
         }
         m_ManagerInstance = (SourceMode)1;
     }
 }
Example #14
0
 public void _0002()
 {
     //Discarded unreachable code: IL_0002
     //IL_0003: Incompatible stack heights: 0 vs 1
     if (m_ManagerInstance != 0)
     {
         m_ManagerInstance = (SourceMode)0;
         MathOperator mathOperator;
         lock (m_WatcherInstance)
         {
             mathOperator = QueueBroadcasterFilter.ResetDic(m_RepositoryInstance);
         }
         if (mathOperator != 0)
         {
             throw new FacadePropertyStruct(mathOperator, "waveOutReset");
         }
         stateInstance.Set();
     }
 }
Example #15
0
        private void QueryDic()
        {
            //Discarded unreachable code: IL_0002
            //IL_0003: Incompatible stack heights: 0 vs 1
            Exception key = null;

            try
            {
                CancelDic();
            }
            catch (Exception ex)
            {
                key = ex;
            }
            finally
            {
                m_ManagerInstance = (SourceMode)0;
                DefineDic(key);
            }
        }
Example #16
0
        public ExchangeRateProvider(SourceMode mode)
        {
            switch (mode)
            {
            case SourceMode.Generate:
                GenerateSourceRates();
                break;

            case SourceMode.File:
                LoadSourceRatesFromFile();
                break;

            case SourceMode.Server:
                RetrieveSourceRatesFromServer();
                break;

            default:
                throw new NotImplementedException(mode.ToString());
            }
        }
Example #17
0
    void UpdateClones()
    {
        if (lastSourceMode != sourceMode)
        {
            lastSourceMode    = sourceMode;
            forceUpdateClones = true;
        }

        if (clones.Length == (int)n && !forceUpdateClones)
        {
            return;
        }

        sources.RemoveAll(source => source == null);

        for (int i = transform.childCount - 1; i >= 0; i--)
        {
            DestroyImmediate(transform.GetChild(i).gameObject);
        }

        sourcesPSR.Clear();
        foreach (var source in sources)
        {
            sourcesPSR.Add(PSR.from(source));
        }

        clones          = new GameObject[(int)n];
        clonesSourceRef = new GameObject[(int)n];

        for (int i = 0; i < n; i++)
        {
            GameObject source = GetSource(i);
            clonesSourceRef [i] = source;
            clones [i]          = Instantiate(source);
            clones [i].transform.SetParent(transform);
        }

        forceUpdateClones = false;
    }
Example #18
0
        public TimeTraceSingleMeasurement(string fileName, SourceMode sourceMode)
        {
            this._FileName = fileName;

            _OutputSingleMeasureStream       = new FileStream(fileName, FileMode.Create, FileAccess.Write);
            _OutputSingleMeasureStreamWriter = new StreamWriter(_OutputSingleMeasureStream);

            switch (sourceMode)
            {
            case SourceMode.Voltage:
            {
                _Header    = "Distance\tI";
                _Subheader = "m\tA";
            } break;

            case SourceMode.Current:
            {
                _Header    = "Distance\tU";
                _Subheader = "m\tV";
            } break;

            default:
                break;
            }

            _OutputSingleMeasureStreamWriter.WriteLine(_Header);
            _OutputSingleMeasureStreamWriter.WriteLine(_Subheader);

            _OutputSingleMeasureStreamWriter.Close();
            _OutputSingleMeasureStream.Close();

            _DataBuilder = new StringBuilder();

            _DataString = "{0}\t{1}";

            AllEventsHandler.Instance.TimetracePointReceived += OnTimeTracePointReceived;
        }
Example #19
0
        public double MeasurePower(double valueThroughTheStructure, int NumberOfAverages, double TimeDelay, SourceMode sourceMode)
        {
            double measuredPower;
            KEITHLEY_2601A_SourceMode _sourceMode = KEITHLEY_2601A_SourceMode.Voltage;

            switch (sourceMode)
            {
            case SourceMode.Voltage:
            {
                _sourceMode = KEITHLEY_2601A_SourceMode.Voltage;
            } break;

            case SourceMode.Current:
            {
                _sourceMode = KEITHLEY_2601A_SourceMode.Current;
            } break;

            default:
                break;
            }
            var measuredPowerString = MeasureResistanceOrPowerValueInChannel(_SelectedChannel, _sourceMode, KEITHLEY_2601A_MeasureMode.Power, valueThroughTheStructure, NumberOfAverages, TimeDelay).TrimEnd('\n');
            var isSucceed           = double.TryParse(measuredPowerString, style, culture, out measuredPower);

            if (isSucceed)
            {
                return(measuredPower);
            }
            else
            {
                return(double.NaN);
            }
        }
Example #20
0
 /// <summary>
 /// Enable controlling the motor voltage with feedback from the specifed mode.
 /// </summary>
 /// <remarks>
 /// After calling this you must call <see cref="EnableControl()"/> or <see cref="EnableControl(double)"/>
 /// to enable the device.
 /// </remarks>
 /// <param name="mode">The <see cref="SourceMode"/> to set the controller to.</param>
 /// <param name="codesPerRev">The number of codes per revolution on the encoder or potentiometer.</param>
 public void SetVoltageMode(SourceMode mode = SourceMode.None, int codesPerRev = 0)
 {
     ChangeControlMode(ControlMode.Voltage);
     switch (mode)
     {
         case SourceMode.Encoder:
             SetPositionReference(LM_REF_NONE);
             SetSpeedReference(LM_REF_ENCODER);
             EncoderCodesPerRev = codesPerRev;
             break;
         case SourceMode.QuadEncoder:
             SetPositionReference(LM_REF_ENCODER);
             SetSpeedReference(LM_REF_QUAD_ENCODER);
             EncoderCodesPerRev = codesPerRev;
             break;
         case SourceMode.Potentiometer:
             SetPositionReference(LM_REF_POT);
             SetSpeedReference(LM_REF_NONE);
             PotentiometerTurns = 1;
             break;
         default:
             SetPositionReference(LM_REF_NONE);
             SetSpeedReference(LM_REF_NONE);
             break;
     }
 }
Example #21
0
 /// <summary>
 /// Enable controlling the motor current with a PID loop based on the specifed source.
 /// </summary>
 /// <remarks>
 /// After calling this you must call <see cref="EnableControl()"/> or <see cref="EnableControl(double)"/>
 /// to enable the device.
 /// </remarks>
 /// <param name="p">The proportional gain of the Jaguar's PID controller</param>
 /// <param name="i">The integral gain of the Jaguar's PID controller</param>
 /// <param name="d">The derivative gain of the Jaguar's PID controller</param>
 /// <param name="mode">The <see cref="SourceMode"/> to set the controller to.</param>
 /// <param name="codesPerRev">The number of codes per revolution on the encoder or potentiometer.</param>
 public void SetCurrentMode(double p, double i, double d, SourceMode mode = SourceMode.None, int codesPerRev = 0)
 {
     ChangeControlMode(ControlMode.Current);
     switch (mode)
     {
         case SourceMode.Encoder:
             SetPositionReference(LM_REF_NONE);
             SetSpeedReference(LM_REF_NONE);
             EncoderCodesPerRev = codesPerRev;
             SetPID(p, i, d);
             break;
         case SourceMode.QuadEncoder:
             SetPositionReference(LM_REF_ENCODER);
             SetSpeedReference(LM_REF_QUAD_ENCODER);
             EncoderCodesPerRev = codesPerRev;
             SetPID(p, i, d);
             break;
         case SourceMode.Potentiometer:
             SetPositionReference(LM_REF_POT);
             SetSpeedReference(LM_REF_NONE);
             PotentiometerTurns = 1;
             SetPID(p, i, d);
             break;
         default:
             SetPositionReference(LM_REF_NONE);
             SetSpeedReference(LM_REF_NONE);
             SetPID(p, i, d);
             break;
     }
 }
Example #22
0
        /// <summary>
        /// Запись в элемент значения параметра
        /// </summary>
        /// <param name="elem">Элемент для записи</param>
        /// <param name="targetParamName">Имя параметр, в который будем записывать</param>
        /// <param name="source">Фиксированное значения для записи или имя параметра-источника</param>
        /// <param name="sourceMode">Определяет, будет записывать фиксирвоанное значение или будет копировать из другого параметра</param>
        public static void SetValue(Element elem, string targetParamName, string source, SourceMode sourceMode)
        {
            Parameter targetParam = elem.LookupParameter(targetParamName);

            if (targetParam == null)
            {
                return;
            }
            if (targetParam.IsReadOnly)
            {
                return;
            }
            switch (sourceMode)
            {
            case SourceMode.FixValue:
                SetFixValue(targetParam, source);
                break;

            case SourceMode.OtherParameter:
                Parameter sourceParam = elem.LookupParameter(source);
                SetValueByParam(sourceParam, targetParam);
                break;
            }
        }
Example #23
0
 /// <summary>
 ///     Sets the source source mode.
 /// </summary>
 /// <param name="sourceMode">
 ///     The source mode.
 /// </param>
 /// <returns>
 ///     The <see cref="WeakBinding"/>.
 /// </returns>
 public WeakBinding SetSourceBindMode(SourceMode sourceMode)
 {
     this.BindSource.SourceMode = sourceMode;
     return(this);
 }
 private void _SetFixedSourceMode(SourceMode mode)
 {
     if (mode != _currentFixedSourceMode)
     {
         switch (mode)
         {
             case SourceMode.Voltage:
                 {
                     _currentFixedSourceMode = mode;
                     _driver.SendCommandRequest(":SOUR:VOLT:MODE FIX");
                 } break;
             case SourceMode.Current:
                 {
                     _currentFixedSourceMode = mode;
                     _driver.SendCommandRequest(":SOUR:CURR:MODE FIX");
                 } break;
             default:
                 break;
         }
     }
 }
        public void SetCompliance(SourceMode sourceMode, double compliance)
        {
            switch (sourceMode)
            {
                case SourceMode.Voltage:
                    {
                        var _compliance = compliance;
                        if (compliance < _minCurrentCompliance)
                            _compliance = _minCurrentCompliance;
                        else if (compliance > _maxCurrentCompliance)
                            _compliance = _maxCurrentCompliance;

                        if (_compliance != _currentCurrentCompliance)
                            _currentCurrentCompliance = _compliance;
                    } break;
                case SourceMode.Current:
                    {
                        var _compliance = compliance;
                        if (compliance < _minVoltageCompliance)
                            _compliance = _minVoltageCompliance;
                        else if (compliance > _maxVoltageCompliance)
                            _compliance = _maxVoltageCompliance;

                        if (_compliance != _currentVoltageCompliance)
                            _currentVoltageCompliance = _compliance;
                    } break;
                default:
                    break;
            }
        }
 public static extern Result AddSource(
     IntPtr ctx,
     SourceMode sourceMode,
     float[] position,
     ref int sourceId,
     bool isAsync);
        private bool InitTimeTraceMeasurements()
        {
            #region SMU, rendering and save data configurations

            if (sourceDeviceConfiguration != null)
            {
                #region Chart rendering settings

                if (_TimeTraceLineGraph != null)
                {
                    _experimentalTimeTraceDataSource.DetachPointReceiveEvent();
                    _TimeTraceLineGraph.Remove();
                    _CurrentTimeTrace.Clear();
                }

                _CurrentTimeTrace = new List <PointD>();
                _experimentalTimeTraceDataSource = new ExperimentalTimetraceDataSource(_CurrentTimeTrace);
                _experimentalTimeTraceDataSource.AttachPointReceiveEvent();
                _TimeTraceLineGraph = new LineGraph(_experimentalTimeTraceDataSource);
                _TimeTraceLineGraph.AddToPlotter(chartTimeTrace);

                #endregion

                //Getting SMU device
                Device = sourceDeviceConfiguration.Keithley2602A_DeviceSettings.Device;

                #region Time trace measurement configuration

                var pAddress = sourceDeviceConfiguration.Keithley2602A_DeviceSettings.DeviceSettings.PrimaryAddress;
                var sAddress = sourceDeviceConfiguration.Keithley2602A_DeviceSettings.DeviceSettings.SecondaryAddress;
                var bNumber  = sourceDeviceConfiguration.Keithley2602A_DeviceSettings.DeviceSettings.BoardNumber;

                var motor = new ORDINARY_MOTOR(pAddress, sAddress, bNumber);
                motor.FinalDestination = 0.0;

                Motor = motor;

                if (TimeTraceCurve != null)
                {
                    TimeTraceCurve.Dispose();
                }

                var ExperimentSettings = IV_And_TimeTraceViewModel.Instance;

                var valueThroughTheStructure      = ExperimentSettings.TimeTraceMeasurementValueThrougtTheStructure;
                var isTimeTraceVoltageModeChecked = ExperimentSettings.IsTimeTraceMeasurementVoltageModeChecked;
                var isTimeTraceCurrentModeChecked = ExperimentSettings.IsTimeTraceMeasurementCurrentModeChecked;

                var selectedTimeTraceModeItem = (tabControlTimeTraceMeasurementParameters.SelectedItem as TabItem).Header.ToString();

                switch (selectedTimeTraceModeItem)
                {
                case "Distance":
                {
                    var motionStartPosition    = ExperimentSettings.TimeTraceMeasurementMotionCurrentDestination;
                    var motionFinalDestination = ExperimentSettings.TimeTraceMeasurementMotionFinalDestination;

                    if (isTimeTraceVoltageModeChecked == true)
                    {
                        TimeTraceCurve = new MeasureTimeTrace(Motor, motionStartPosition, motionFinalDestination, Device, KEITHLEY_2601A_SourceMode.Voltage, KEITHLEY_2601A_MeasureMode.Resistance, valueThroughTheStructure);
                    }
                    else if (isTimeTraceCurrentModeChecked == true)
                    {
                        TimeTraceCurve = new MeasureTimeTrace(Motor, motionStartPosition, motionFinalDestination, Device, KEITHLEY_2601A_SourceMode.Current, KEITHLEY_2601A_MeasureMode.Resistance, valueThroughTheStructure);
                    }
                } break;

                case "Distance (Repetitive)":
                {
                    var motionRepetitiveStartPosition = ExperimentSettings.TimeTraceMeasurementDistanceRepetitiveStartPosition;
                    var motionRepetitiveEndPosition   = ExperimentSettings.TimeTraceMeasurementDistanceRepetitiveEndPosition;
                    var numerCycles = ExperimentSettings.TimeTraceMeasurementDistanceRepetitiveNumberCycles;

                    if (isTimeTraceVoltageModeChecked == true)
                    {
                        TimeTraceCurve = new MeasureTimeTrace(Motor, motionRepetitiveStartPosition, motionRepetitiveEndPosition, Device, KEITHLEY_2601A_SourceMode.Voltage, KEITHLEY_2601A_MeasureMode.Resistance, valueThroughTheStructure);
                    }
                    else if (isTimeTraceCurrentModeChecked == true)
                    {
                        TimeTraceCurve = new MeasureTimeTrace(Motor, motionRepetitiveStartPosition, motionRepetitiveEndPosition, Device, KEITHLEY_2601A_SourceMode.Current, KEITHLEY_2601A_MeasureMode.Resistance, valueThroughTheStructure);
                    }
                } break;

                case "Time":
                {
                } break;

                case "Fixed R":
                {
                } break;

                default:
                    break;
                }

                #endregion

                #region Saving Time Trace data into files

                var    _TimeTraceFileNumber = String.Format("_{0}{1}{2}", (_TimeTraceFilesCounter / 100) % 10, (_TimeTraceFilesCounter / 10) % 10, _TimeTraceFilesCounter % 10);
                string newFileName          = string.Empty;

                if (!string.IsNullOrEmpty(_SaveTimeTraceMeasuremrentFileName))
                {
                    _TimeTraceMeasurementLog = new TimeTraceMeasurementLog((new FileInfo(_SaveTimeTraceMeasuremrentFileName)).DirectoryName + "\\TimeTraceMeasurementLog.dat");

                    newFileName = _SaveTimeTraceMeasuremrentFileName.Insert(_SaveTimeTraceMeasuremrentFileName.LastIndexOf('.'), _TimeTraceFileNumber);
                    ++_TimeTraceFilesCounter;
                }

                string sourceMode = string.Empty;

                if (!string.IsNullOrEmpty(_SaveTimeTraceMeasuremrentFileName))
                {
                    string fileName = (new FileInfo(newFileName)).Name;

                    if (this.radioTimeTraceSourceVoltage.IsChecked == true)
                    {
                        sourceMode = "Source mode: Voltage";
                    }
                    else if (this.radioTimeTraceSourceCurrent.IsChecked == true)
                    {
                        sourceMode = "SourceMode: Current";
                    }

                    double micrometricBoltPosition = double.NaN;
                    double.TryParse(this.textBoxTimeTraceMicrometricBoltPosition.Text, numberStyle, culture, out micrometricBoltPosition);

                    string comment = this.textBoxTimeTraceComment.Text;

                    _TimeTraceMeasurementLog.AddNewTimeTraceMeasurementLog(fileName, sourceMode, valueThroughTheStructure, comment);
                }

                SourceMode _sourceMode = SourceMode.Voltage; //Source mode is voltage by default

                if (sourceMode == "Source mode: Voltage")
                {
                    _sourceMode = SourceMode.Voltage;
                }
                else if (sourceMode == "SourceMode: Current")
                {
                    _sourceMode = SourceMode.Current;
                }

                if (_TimeTraceSingleMeasurement != null)
                {
                    _TimeTraceSingleMeasurement.Dispose();
                }

                _TimeTraceSingleMeasurement = new TimeTraceSingleMeasurement(newFileName, _sourceMode);

                #endregion

                return(true);
            }
            else
            {
                return(false);
            }

            #endregion
        }
        /// <summary>
        /// Initializes the new I-V curve measurements
        /// </summary>
        /// <returns>true, if initialization succeed and false otherwise</returns>
        private bool InitIV_Measurements()
        {
            #region SMU, rendering and save data configurations

            //Checking the SMU settings
            if (sourceDeviceConfiguration != null)
            {
                #region Chart rendering settings

                //Initializing a new plot on I-V chart
                if (_IV_LineGraph != null)
                {
                    //Detaching receive event from "old" data source
                    _experimentalIV_DataSource.DetachPointReceiveEvent();
                    _IV_LineGraph.Remove();
                }
                //Creating new plot and attaching it to the chart
                _CurrentIV_Curve           = new List <PointD>();
                _experimentalIV_DataSource = new ExperimentalIV_DataSource(_CurrentIV_Curve);
                _experimentalIV_DataSource.AttachPointReceiveEvent();
                _IV_LineGraph = new LineGraph(_experimentalIV_DataSource);
                _IV_LineGraph.AddToPlotter(chartIV_Curves);

                #endregion

                //Getting SMU device
                Device = sourceDeviceConfiguration.Keithley2602A_DeviceSettings.Device;

                #region I-V measurement configuration

                var ExperimentSettings = IV_And_TimeTraceViewModel.Instance;

                var StartValue       = ExperimentSettings.IV_MeasurementStartValue;
                var EndValue         = ExperimentSettings.IV_MeasurementEndValue;
                var Step             = ExperimentSettings.IV_MeasurementStep;
                var NumberOfAverages = ExperimentSettings.IV_MeasurementNumberOfAverages;
                var TimeDelay        = ExperimentSettings.IV_MeasurementTimeDelay;

                SourceMode DeviceSourceMode = SourceMode.Voltage;

                if (this.radioIVSourceVoltage.IsChecked == true)
                {
                    DeviceSourceMode = SourceMode.Voltage;
                }
                else if (this.radioIVSourceCurrent.IsChecked == true)
                {
                    DeviceSourceMode = SourceMode.Current;
                }

                IV_Curve = new MeasureIV(StartValue, EndValue, Step, NumberOfAverages, TimeDelay, DeviceSourceMode, Device);

                #endregion

                #region Saving I-V data into files

                var    _IV_FileNumber = String.Format("_{0}{1}{2}", (_IV_FilesCounter / 100) % 10, (_IV_FilesCounter / 10) % 10, _IV_FilesCounter % 10);
                string newFileName    = string.Empty;

                if (!string.IsNullOrEmpty(_SaveIV_MeasuremrentFileName))
                {
                    _IV_MeasurementLog = new IV_MeasurementLog((new FileInfo(_SaveIV_MeasuremrentFileName)).DirectoryName + "\\IV_MeasurementLog.dat");

                    newFileName = _SaveIV_MeasuremrentFileName.Insert(_SaveIV_MeasuremrentFileName.LastIndexOf('.'), _IV_FileNumber);
                    ++_IV_FilesCounter;
                }

                if (!string.IsNullOrEmpty(_SaveIV_MeasuremrentFileName))
                {
                    string fileName = (new FileInfo(newFileName)).Name;

                    string sourceMode = string.Empty;

                    if (this.radioIVSourceVoltage.IsChecked == true)
                    {
                        sourceMode = "Source mode: Voltage";
                    }
                    else if (this.radioIVSourceCurrent.IsChecked == true)
                    {
                        sourceMode = "SourceMode: Current";
                    }

                    double micrometricBoltPosition = double.NaN;
                    double.TryParse(this.textBoxIV_MicrometricBoltPosition.Text, numberStyle, culture, out micrometricBoltPosition);

                    string comment = this.textBoxIV_Comment.Text;

                    _IV_MeasurementLog.AddNewIV_MeasurementLog(fileName, sourceMode, micrometricBoltPosition, comment);
                }

                if (_IV_SingleMeasurement != null)
                {
                    _IV_SingleMeasurement.Dispose();
                }


                _IV_SingleMeasurement = new IV_SingleMeasurement(newFileName);

                #endregion

                return(true);
            }
            else
            {
                MessageBox.Show("The device is not initialized.", "Error!", MessageBoxButton.OK, MessageBoxImage.Error);
                return(false);
            }

            #endregion
        }
        public void SetCompliance(SourceMode sourceMode, double compliance)
        {
            switch (sourceMode)
            {
                case SourceMode.Voltage:
                    {
                        var _compliance = compliance;
                        if (compliance < _minCurrentCompliance)
                            _compliance = _minCurrentCompliance;
                        else if (compliance > _maxCurrentCompliance)
                            _compliance = _maxCurrentCompliance;

                        if (_compliance != _currentCurrentCompliance)
                        {
                            _currentCurrentCompliance = _compliance;
                            _driver.SendCommandRequest(string.Format(":SENS:CURR:PROT {0}", _compliance.ToString(NumberFormatInfo.InvariantInfo)));
                        }
                    } break;
                case SourceMode.Current:
                    {
                        var _compliance = compliance;
                        if (compliance < _minVoltageCompliance)
                            _compliance = _minVoltageCompliance;
                        else if (compliance > _maxVoltageCompliance)
                            _compliance = _maxVoltageCompliance;

                        if (_compliance != _currentVoltageCompliance)
                        {
                            _currentVoltageCompliance = _compliance;
                            _driver.SendCommandRequest(string.Format(":SENS:VOLT:PROT {0}", _compliance.ToString(NumberFormatInfo.InvariantInfo)));
                        }
                    } break;
                default:
                    break;
            }
        }
        public void SetCompliance(SourceMode sourceMode, double compliance)
        {
            switch (sourceMode)
            {
                case SourceMode.Voltage:
                    {
                        if (compliance != _currentCurrentCompliance)
                        {
                            _currentCurrentCompliance = compliance;
                            _driver.SendCommandRequest(string.Format(":SENS:CURR:PROT {0}", compliance.ToString(NumberFormatInfo.InvariantInfo)));
                        }
                    } break;
                case SourceMode.Current:
                    {
                        var query = (from limit in _VSourceProtectionLimits
                                     where limit - Math.Abs(compliance) >= 0.0
                                     select new
                                     {
                                         limit,
                                         distance = limit - Math.Abs(compliance)
                                     }).OrderBy(p => p.distance).First().limit;

                        if (query != _currentVoltageCompliance)
                        {
                            _currentVoltageCompliance = query;
                            _driver.SendCommandRequest(string.Format(":SENS:VOLT:PROT {0}", query.ToString(NumberFormatInfo.InvariantInfo)));
                        }
                    } break;
                default:
                    break;
            }
        }
Example #31
0
    void OnProcessRockClick()
    {
        mCurMode = SourceMode.Rock;

        StartCoroutine(DoSourceSelect());
    }
 public static extern Result UpdateSourceMode(
     IntPtr ctx,
     int sourceId,
     SourceMode mode);
Example #33
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="SourceChangedEventArgs"/> class.
 /// </summary>
 /// <param name="sourceMode">
 ///     The source mode.
 /// </param>
 /// <param name="oldSource">
 ///     The old source.
 /// </param>
 /// <param name="newSource">
 ///     The new source.
 /// </param>
 public SourceChangedEventArgs(SourceMode sourceMode, object oldSource, object newSource)
 {
     this.SourceMode = sourceMode;
     this.OldSource  = oldSource;
     this.NewSource  = newSource;
 }
 /// <summary>
 ///     Initializes a new instance of the <see cref="SourceChangedEventArgs"/> class.
 /// </summary>
 /// <param name="sourceMode">
 ///     The source mode.
 /// </param>
 /// <param name="oldSource">
 ///     The old source.
 /// </param>
 /// <param name="newSource">
 ///     The new source.
 /// </param>
 public SourceChangedEventArgs(SourceMode sourceMode, object oldSource, object newSource)
 {
     this.SourceMode = sourceMode;
     this.OldSource = oldSource;
     this.NewSource = newSource;
 }
        private void _SetSourceRange(double val, SourceMode mode)
        {
            switch (mode)
            {
                case SourceMode.Voltage:
                    {
                        var query = (from range in _VoltageRanges
                                     where range - Math.Abs(val) > 0.0
                                     select new
                                     {
                                         range = range,
                                         distance = range - Math.Abs(val)
                                     }).OrderBy(p => p.distance).First().range;
                        if (query != _currentSourceVoltageRange)
                        {
                            _currentSourceVoltageRange = query;
                            _driver.SendCommandRequest(string.Format(":SOUR:VOLT:RANG {0}", query.ToString(NumberFormatInfo.InvariantInfo)));
                        }
                    } break;
                case SourceMode.Current:
                    {
                        var query = (from range in _CurrentRanges
                                     where range - Math.Abs(val) > 0.0
                                     select new
                                     {
                                         range = range,
                                         distance = range - Math.Abs(val)
                                     }).OrderBy(p => p.distance).First().range;

                        if (query != _currentSourceCurrentRange)
                        {
                            _currentSourceCurrentRange = query;
                            _driver.SendCommandRequest(string.Format(":SOUR:CURR:RANG {0}", query.ToString(NumberFormatInfo.InvariantInfo)));
                        }
                    } break;
                default:
                    break;
            }
        }
Example #36
0
    void OnProcessOrganicClick()
    {
        mCurMode = SourceMode.Organic;

        StartCoroutine(DoSourceSelect());
    }
 private void _SetSourceLevel(double val, SourceMode mode)
 {
     switch (mode)
     {
         case SourceMode.Voltage:
             _driver.SendCommandRequest(string.Format(":SOUR:VOLT:LEV {0}", val.ToString(NumberFormatInfo.InvariantInfo)));
             break;
         case SourceMode.Current:
             _driver.SendCommandRequest(string.Format(":SOUR:CURR:LEV {0}", val.ToString(NumberFormatInfo.InvariantInfo)));
             break;
         default:
             break;
     }
 }
Example #38
0
 /// <summary>
 ///     Set the <see cref="SourceMode"/> to bind target.
 /// </summary>
 /// <param name="sourceMode">
 ///     The source mode.
 /// </param>
 /// <returns>
 ///     The <see cref="WeakBinding"/>.
 /// </returns>
 public WeakBinding SetTargetBindMode(SourceMode sourceMode)
 {
     this.BindTarget.SourceMode = sourceMode;
     return(this);
 }
 private void _SetSourceMode(SourceMode mode)
 {
     if (mode != _currentSourceMode)
     {
         switch (mode)
         {
             case SourceMode.Voltage:
                 {
                     _currentSourceMode = mode;
                     _driver.SendCommandRequest(":SOUR:FUNC:MODE VOLT");
                 } break;
             case SourceMode.Current:
                 {
                     _currentSourceMode = mode;
                     _driver.SendCommandRequest(":SOUR:FUNC:MODE CURR");
                 } break;
             default:
                 break;
         }
     }
 }