Skip to content

DMM

Digital multimeter session view (IVI-inspired / SCPI :MEASure). All numeric values use SI base units (V, A, Ω).

See capability matrix for Base vs Extension status.

Open

let mut dmm = catalog.open_dmm(&address)?;
var dmm = catalog.OpenDmm(address);

Measure

let vdc = dmm.measure_voltage_dc(None)?;
let vac = dmm.measure_voltage_ac(Some(10.0))?;
let idc = dmm.measure_current_dc(None)?;
let ohms = dmm.measure_resistance(None)?;
var vdc = dmm.MeasureVoltageDc();
var vac = dmm.MeasureVoltageAc(10.0);
var idc = dmm.MeasureCurrentDc();
var ohms = dmm.MeasureResistance();

Configure

dmm.configure_voltage_dc(Some(10.0), Some(0.001))?;
dmm.ConfigureVoltageDc(range: 10.0, resolution: 0.001);

Mock example

use instrument::prelude::*;

fn main() -> Result<()> {
    let fixture = ScriptedFixture::builder()
        .idn("Keysight Technologies", "34401A", "SN1", "1.0")
        .kinds([InstrumentKind::Dmm])
        .on_query("*IDN?", "Keysight Technologies,34401A,SN1,1.0")
        .on_query(":MEAS:VOLT:DC?", "1.234")
        .build();

    let catalog = DeviceCatalog::from_fixture("mock://dmm-1", fixture)?;
    let volts = catalog.open_dmm("mock://dmm-1")?.measure_voltage_dc(None)?;
    println!("{volts} V");
    Ok(())
}
using InstrumentComponents.Catalog;
using InstrumentComponents.Kind;
using InstrumentComponents.Mock;

var fixture = ScriptedFixture.Builder()
    .Idn("Keysight Technologies", "34401A", "SN1", "1.0")
    .Kinds(InstrumentKind.Dmm)
    .OnQuery("*IDN?", "Keysight Technologies,34401A,SN1,1.0")
    .OnQuery(":MEAS:VOLT:DC?", "1.234")
    .Build();

var catalog = DeviceCatalog.FromFixture("mock://dmm-1", fixture);
var volts = catalog.OpenDmm("mock://dmm-1").MeasureVoltageDc();
Console.WriteLine($"{volts} V");

Async

AsyncDmm mirrors the sync methods with .await. See Rust async.

AsyncDmm exposes MeasureVoltageDcAsync, etc. See C# async.