Пример #1
0
        public void ExecuteCVTest()
        {
            // Check if Config file already exists before Saving
            if (File.Exists(ResultsFileName))
            {
                MessageBoxResult result = MessageBox.Show("Results file already exists \n Are you sure you want to over-write",
                                                          "CV_App", MessageBoxButton.YesNo);
                if (result == MessageBoxResult.No)
                {
                    return;
                }
            }
            // Open Results file for writing
            try
            {
                _cvScan.ResultsStream = new StreamWriter(ResultsFileName);
            }
            catch (Exception ex)
            {
                StatusMessage = $"Unable to open {ResultsFileName} for writing: {ex.Message}";
                return;
            }
            var serialPortManager = _serialPortManagerSelector.GetSerialManager(_cvEnv);

            Keithley.GetModel().InitializeDevice(serialPortManager);
            WayneKerr.GetModel().InitializeDevice(serialPortManager);
            _cvScan.Description = Description;
            _cvScan.Frequencies = FrequencyList;
            _monitorStringBuilder.Clear();
            Keithley.SetModelForExecution();
            WayneKerr.SetModelForExecution();


            Executing     = true;
            MonitorText   = "";
            StatusMessage = "Executing CV test";

            if (!_keithley.SerialPort.IsOpen)
            {
                _keithley.SerialPort.Open();
            }
            if (!_wayneKerr.SerialPort.IsOpen)
            {
                _wayneKerr.SerialPort.Open();
            }
            _cancellationTokenSource = new CancellationTokenSource();
            Task task = Task.Factory.StartNew(() => _cvScan.Multiscan(_keithley, _wayneKerr, _cvEnv, _cancellationTokenSource.Token),
                                              _cancellationTokenSource.Token).ContinueWith((parentTask) =>
            {
                EndExecution();
                StatusMessageDelegate("End of C-V Program session");
            }).ContinueWith((parentTask) =>
            {
                new ErrorHandlerViewModel(parentTask, ExceptionMessageBoxDelegate);
                EndExecution();
                StatusMessageDelegate("C-V Program failed");
            }, TaskContinuationOptions.OnlyOnFaulted);
        }
Пример #2
0
 public void ExecuteOpenCircuitTest()
 {
     OpenCircuitActive = true;
     WayneKerr.GetModel().SerialSafeWrite(":CAL:OC-TRIM 3");
 }
Пример #3
0
        public void ExecuteDiscovery()
        {
            DevicesDiscovered = true;
            StatusMessage     = "Discovering Devices";
            WayneKerr.ReleaseDevice();
            Keithley.ReleaseDevice();

            _cvEnv = new CVEnvironment(KeithleyEmulationFile, WayneKerrEmulationFile, Emulate);
            var serialPortManager = _serialPortManagerSelector.GetSerialManager(_cvEnv);

            if (_wayneKerr.SerialPort != null && _wayneKerr.SerialPort.IsOpen)
            {
                _wayneKerr.SerialPort.Close();
            }
            if (_keithley.SerialPort != null && _keithley.SerialPort.IsOpen)
            {
                _keithley.SerialPort.Close();
            }

            try
            {
                _keithley.InitializeDevice(serialPortManager);
            }
            catch (Exception ex)
            {
                ExceptionMessageBoxDelegate(ex.Message);
            }

            try
            {
                _wayneKerr.InitializeDevice(serialPortManager);
            }
            catch (Exception ex)
            {
                ExceptionMessageBoxDelegate(ex.Message);
            }

            //Check if devices discovered
            if (_wayneKerr.SerialPort == null)
            {
                DevicesDiscovered  = false;
                WayneKerr.PortName = "";
                StatusMessage      = "Wayne Kerr device not found";
            }
            else
            {
                WayneKerr.PortName = _wayneKerr.SerialPort.PortName;
                if (_wayneKerr.SerialPort.IsOpen)
                {
                    _wayneKerr.SerialPort.Close();
                }
            }
            if (_keithley.SerialPort == null)
            {
                DevicesDiscovered = false;
                Keithley.PortName = "";
                StatusMessage     = "Keithley device not found";
            }
            else
            {
                Keithley.PortName = _keithley.SerialPort.PortName;
                if (_keithley.SerialPort.IsOpen)
                {
                    _keithley.SerialPort.Close();
                }
            }
            if (DevicesDiscovered)
            {
                StatusMessage = "Devices sucessfully discovered";
            }
        }