示例#1
0
 public ISerialPortManager GetSerialManager(ICVEnvironment cvEnv)
 {
     if (cvEnv.Emulate)
     {
         ((SerialPortEmulatorManager)_serialPortEmulatorManager).EmulatorEnvironment = cvEnv;
         return(_serialPortEmulatorManager);
     }
     return(_realSerialPortManager);
 }
示例#2
0
        public void Multiscan(IKeithley2400Model keithley2400,
                              IWayneKerr4300Model wayneKerr4300,
                              ICVEnvironment cvEnv,
                              CancellationToken token)
        {
            _keithley2400  = keithley2400;
            _wayneKerr4300 = wayneKerr4300;

            WriteComment(DateTime.Now.ToString());
            string senseMode = "KT24 sensing mode is " + keithley2400.SerialSafeRead(":SYSTem:RSENse?");

            WriteComment(senseMode);
            WriteComment(Description);

            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();

            string f_setstring = ":MEAS:FREQ "; // WK AC probe frequency setup prefix
            string v_setstring = ":MEAS:LEV ";  // WK AC probe amplitude setup prefix

            string setstring = v_setstring += wayneKerr4300.Amplitude.ToString();

            wayneKerr4300.SerialSafeWriteWithDelay(setstring);     // Measuring AC amplitude now also set to operator defined value

            setstring  = ":SENS:CURR:PROT ";
            setstring += keithley2400.CurrentLimit.ToString();
            keithley2400.SerialSafeWriteWithDelay(setstring);            //Now set the Keithley 2400 I limit to configuration value

            int i = 0;

            foreach (double test_frequency in Frequencies)
            {
                if (token.IsCancellationRequested)
                {
                    break;
                }
                string setfrequency = f_setstring + test_frequency.ToString();
                wayneKerr4300.SerialSafeWriteWithDelay(setfrequency);
                Thread.Sleep(2000);     // WK needs a HUGE delay in setting the frequency.
                                        // Without this pause, either the Frequency in not set as requested
                                        // Or the WK times-out when asking for the frequency.

                C_V_Scan(token);
                i++;
            }
            stopWatch.Stop();
            var    elapsed         = stopWatch.Elapsed;
            string completdMessage = $"CV Test Completed: Elapsed time {elapsed.Hours:00}:{elapsed.Minutes:00}:{elapsed.Seconds:00}:{elapsed.Milliseconds / 10:00} ";

            return; // End task;
        }
示例#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";
            }
        }