SMU - OE-FET/JISA GitHub Wiki
Reference: SMU
public abstract class SMU extends VISADevice
Abstract class to define the standard functionality of source measure units.
This page is created from the JavaDoc of the SMU
abstract class, detailing all the standard SMU
methods, what they do (or should do if you are implementing an SMU
-derived class).
In plain English, this page details all the methods that you can use on any Source Measure Unit object, regardless of make and model.
Abstract Methods
These are methods that all SMU
classes are required to implement.
getVoltage
public abstract double getVoltage() throws DeviceException, IOException
Returns the voltage either being applied or measured by the SMU.
- Returns: Voltage value
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
getCurrent
public abstract double getCurrent() throws DeviceException, IOException
Returns the current either being injected or measured by the SMU.
- Returns: Current value
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
setVoltage
public abstract void setVoltage(double voltage) throws DeviceException, IOException
Sets the voltage value to be applied by the SMU (switching to voltage source mode if not already)
- Parameters:
voltage
— Value to set - Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
setCurrent
public abstract void setCurrent(double current) throws DeviceException, IOException
Sets the current value to be applied by the SMU (switching to current source mode if not already)
- Parameters:
current
— Value to set - Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
turnOn
public abstract void turnOn() throws DeviceException, IOException
Turns the output of the SMU on
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
turnOff
public abstract void turnOff() throws DeviceException, IOException
Turns the output of the SMU off
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
isOn
public abstract boolean isOn() throws DeviceException, IOException
Checks whether the output of the SMU is currently enabled
- Returns: Is the output on?
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
setSource
public abstract void setSource(Source source) throws DeviceException, IOException
Sets the source mode of the SMU (VOLTAGE or CURRENT)
- Parameters:
source
— Source mode to set - Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
getSource
public abstract Source getSource() throws DeviceException, IOException
Returns the current source mode of the SMU (VOLTAGE OR CURRENT)
- Returns: Source mode
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
setBias
public abstract void setBias(double level) throws DeviceException, IOException
Sets the value for whichever parameter is currently being sourced
- Parameters:
level
— The level to set - Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
getSourceValue
public abstract double getSourceValue() throws DeviceException, IOException
Returns the value of whichever parameter is set as source currently
- Returns: Value of source
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
getMeasureValue
public abstract double getMeasureValue() throws DeviceException, IOException
Returns the value of whichever parameter is set as measure currently
- Returns: Value of measure
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
Concrete Methods
These are methods with an implementation given in SMU
. All deriving classes will inherit these implementations, giving them this basic functionality for "free". However, developers may wish to override these still if the specific device being developed for has a more efficient means of performing these actions.
doLinearSweep
public DataPoint[] doLinearSweep(Source source, double min, double max, int numSteps, long delay, boolean symmetric) throws DeviceException, IOException
Performs a linear sweep of either VOLTAGE or CURRENT, returning the V-I data points as an array of DataPoint objects
- Parameters:
source
— VOLTAGE or CURRENTmin
— Minimum source valuemax
— Maximum source valuenumSteps
— Number of steps in sweepdelay
— Amount of time, in milliseconds, to wait before taking each measurementsymmetric
— Should we sweep back to starting point after sweeping forwards?
- Returns: Array of DataPoint objects containing I-V data points
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
public DataPoint[] doLinearSweep(Source source, double min, double max, int numSteps, long delay, boolean symmetric, ProgressMonitor onUpdate) throws DeviceException, IOException
Performs a linear sweep of either VOLTAGE or CURRENT, returning the V-I data points as an array of DataPoint objects whilst allowing you to keep track of the sweep's progress via a ProgressMonitor object.
- Parameters:
source
— VOLTAGE or CURRENTmin
— Minimum source valuemax
— Maximum source valuenumSteps
— Number of steps in sweepdelay
— Amount of time, in milliseconds, to wait before taking each measurementsymmetric
— Should we sweep back to starting point after sweeping forwards?onUpdate
— Method to run each time a new measurement is completed
- Returns: Array of DataPoint objects containing I-V data points
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
doLogarithmicSweep
public DataPoint[] doLogarithmicSweep(Source source, double min, double max, int numSteps, long delay, boolean symmetric) throws DeviceException, IOException
Performs a logarithmic sweep of either VOLTAGE or CURRENT, returning V-I data points as an array of DataPoint objects.
- Parameters:
source
— VOLTAGE or CURRENTmin
— Minimum source valuemax
— Maximum source valuenumSteps
— Number of steps in sweepdelay
— Amount of time, in milliseconds, to wait before taking each measurementsymmetric
— Should we sweep back to starting point after sweeping forwards?
- Returns: Array of DataPoint objects containing V-I data points
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
public DataPoint[] doLogarithmicSweep(Source source, double min, double max, int numSteps, long delay, boolean symmetric, ProgressMonitor onUpdate) throws DeviceException, IOException
Performs a logarithmic sweep of either VOLTAGE or CURRENT, returning V-I data points as an array of DataPoint objects whilst allowing you to keep track of the sweep's progress via a ProgressMonitor object.
- Parameters:
source
— VOLTAGE or CURRENTmin
— Minimum source valuemax
— Maximum source valuenumSteps
— Number of steps in sweepdelay
— Amount of time, in milliseconds, to wait before taking each measurementsymmetric
— Should we sweep back to starting point after sweeping forwards?onUpdate
— Method ot run each time a new measurement is completed
- Returns: Array of DataPoint objects containing V-I data points
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
doSweep
public DataPoint[] doSweep(Source source, double[] values, long delay, boolean symmetric, ProgressMonitor onUpdate) throws DeviceException, IOException
Performs a logarithmic sweep of either VOLTAGE or CURRENT, returning V-I data points as an array of DataPoint objects whilst allowing you to keep track of the sweep's progress via a ProgressMonitor object.
- Parameters:
source
— VOLTAGE or CURRENTvalues
— Array of values to use in the sweepdelay
— Amount of time, in milliseconds, to wait before taking each measurementsymmetric
— Should we sweep back to starting point after sweeping forwards?onUpdate
— Method ot run each time a new measurement is completed
- Returns: Array of DataPoint objects containing V-I data points
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
public DataPoint[] doSweep(Source source, double[] values, boolean symmetric, long delay) throws IOException, DeviceException
Performs a logarithmic sweep of either VOLTAGE or CURRENT, returning V-I data points as an array of DataPoint objects whilst allowing you to keep track of the sweep's progress via a ProgressMonitor object.
- Parameters:
source
— VOLTAGE or CURRENTvalues
— Array of values to use in the sweepdelay
— Amount of time, in milliseconds, to wait before taking each measurementsymmetric
— Should we sweep back to starting point after sweeping forwards?
- Returns: Array of DataPoint objects containing V-I data points
- Exceptions:
DeviceException
— Upon incompatibility with deviceIOException
— Upon communications error
Enums and Sub-Classes
These are structures pertinent to and used by SMU
objects.
Source
public enum Source
Enumeration of source modes
- Values:
VOLTAGE
— Voltage source modeCURRENT
— Current source mode
DataPoint
public class DataPoint
Class to contain voltage-current data points
- Parameters:
voltage
— Voltage value in data-point (in Volts)current
— Current value in data-point (in Amps)
ProgressMonitor
public interface ProgressMonitor
Structure for defining what to do on each update