public ISerialPortManager GetSerialManager(ICVEnvironment cvEnv) { if (cvEnv.Emulate) { ((SerialPortEmulatorManager)_serialPortEmulatorManager).EmulatorEnvironment = cvEnv; return(_serialPortEmulatorManager); } return(_realSerialPortManager); }
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; }
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"; } }