Skip to content
William Wood edited this page Dec 3, 2018 · 2 revisions

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 device
    • IOException — 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 device
    • IOException — 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 device
    • IOException — 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 device
    • IOException — Upon communications error

turnOn

public abstract void turnOn() throws DeviceException, IOException

Turns the output of the SMU on

  • Exceptions:
    • DeviceException — Upon incompatibility with device
    • IOException — Upon communications error

turnOff

public abstract void turnOff() throws DeviceException, IOException

Turns the output of the SMU off

  • Exceptions:
    • DeviceException — Upon incompatibility with device
    • IOException — 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 device
    • IOException — 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 device
    • IOException — 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 device
    • IOException — 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 device
    • IOException — 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 device
    • IOException — 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 device
    • IOException — 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 CURRENT
    • min — Minimum source value
    • max — Maximum source value
    • numSteps — Number of steps in sweep
    • delay — Amount of time, in milliseconds, to wait before taking each measurement
    • symmetric — 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 device
    • IOException — 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 CURRENT
    • min — Minimum source value
    • max — Maximum source value
    • numSteps — Number of steps in sweep
    • delay — Amount of time, in milliseconds, to wait before taking each measurement
    • symmetric — 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 device
    • IOException — 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 CURRENT
    • min — Minimum source value
    • max — Maximum source value
    • numSteps — Number of steps in sweep
    • delay — Amount of time, in milliseconds, to wait before taking each measurement
    • symmetric — 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 device
    • IOException — 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 CURRENT
    • min — Minimum source value
    • max — Maximum source value
    • numSteps — Number of steps in sweep
    • delay — Amount of time, in milliseconds, to wait before taking each measurement
    • symmetric — 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 device
    • IOException — 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 CURRENT
    • values — Array of values to use in the sweep
    • delay — Amount of time, in milliseconds, to wait before taking each measurement
    • symmetric — 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 device
    • IOException — 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 CURRENT
    • values — Array of values to use in the sweep
    • delay — Amount of time, in milliseconds, to wait before taking each measurement
    • symmetric — 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 device
    • IOException — 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 mode
    • CURRENT — 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


Clone this wiki locally