# DMM (Digital Multimeter)

Digital multimeters.

## Instrument and Abstract Driver

| [`InstroDMM`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.InstroDMM.md#instro.dmm.InstroDMM "instro.dmm.InstroDMM") | Digital multimeter instrument. |
| --- | --- |
| [`DMMDriverBase`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.DMMDriverBase.md#instro.dmm.DMMDriverBase "instro.dmm.DMMDriverBase") | Vendor DMM driver contract. |

## Vendor Drivers

| Vendor | Model | Description |
| --- | --- | --- |
| Keithley | [`2400`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.drivers.keithley_2400.Keithley2400.md#instro.dmm.drivers.keithley_2400.Keithley2400 "instro.dmm.drivers.keithley_2400.Keithley2400") | Keithley 2400 SMU as a sense-only DMM. |
| Agilent | [`34401A`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.drivers.agilent_a34401a.Agilent34401A.md#instro.dmm.drivers.agilent_a34401a.Agilent34401A "instro.dmm.drivers.agilent_a34401a.Agilent34401A") | Agilent/HP/Keysight 34401A DMM. |
| Keysight | [`34461A`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.drivers.keysight_34461a.Keysight34461A.md#instro.dmm.drivers.keysight_34461a.Keysight34461A "instro.dmm.drivers.keysight_34461a.Keysight34461A") | Keysight 34461A Truevolt DMM. |
| Fluke | [`8845A (unstable)`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A") | Fluke 8845A 6.5-digit DMM, driven through its Agilent 34401A-compatible `8845` command set. |

## Simulated Drivers

| [`VirtualDMM`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.drivers.virtual.VirtualDMM.md#instro.dmm.drivers.virtual.VirtualDMM "instro.dmm.drivers.virtual.VirtualDMM") | DMM simulated in-process: no transport, server, or hardware. |
| --- | --- |
| [`SimulatedDMM`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.drivers.simulated.SimulatedDMM.md#instro.dmm.drivers.simulated.SimulatedDMM "instro.dmm.drivers.simulated.SimulatedDMM") | Client for the in-process simulated DMM SCPI server. |

## Types & Configuration

| [`MeasurementFunction`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.types.MeasurementFunction.md#instro.dmm.types.MeasurementFunction "instro.dmm.types.MeasurementFunction") | DMM measurement function (mode). |
| --- | --- |
| [`RangeMode`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.types.RangeMode.md#instro.dmm.types.RangeMode "instro.dmm.types.RangeMode") | DMM range mode published on `range_mode.cmd`. |
| [`DMMMeasurementConfig`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.types.DMMMeasurementConfig.md#instro.dmm.types.DMMMeasurementConfig "instro.dmm.types.DMMMeasurementConfig") | DMM acquisition config. |
| [`DMMConfig`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.config.DMMConfig.md#instro.dmm.config.DMMConfig "instro.dmm.config.DMMConfig") | Validated config for constructing an InstroDMM from JSON. |
| [`MeasurementConfig`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.config.MeasurementConfig.md#instro.dmm.config.MeasurementConfig "instro.dmm.config.MeasurementConfig") | Initial measurement state, applied through the InstroDMM setters on `open()`. |
| [`VisaDriverConfig`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.config.VisaDriverConfig.md#instro.dmm.config.VisaDriverConfig "instro.dmm.config.VisaDriverConfig") | Driver config for a VISA-connected DMM. |
| [`resolve_dmm_from_config`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.config.resolve_dmm_from_config.md#instro.dmm.config.resolve_dmm_from_config "instro.dmm.config.resolve_dmm_from_config") | Resolve a validated DMMConfig into the `(name, driver, config_publishers, poll_interval)` InstroDMM needs. |

### Shared configuration

| Class | Description |
| --- | --- |
| [`DeviceInfo`](https://dev.nominal.io/instro/ref/library/instro.lib.types.DeviceInfo.md#instro.lib.types.DeviceInfo "instro.lib.types.DeviceInfo") | Device metadata. |
| [`TimingConfig`](https://dev.nominal.io/instro/ref/library/instro.lib.config.TimingConfig.md#instro.lib.config.TimingConfig "instro.lib.config.TimingConfig") | Timing configuration for instrument background polling. |
| [`NominalCorePublisherConfig`](https://dev.nominal.io/instro/ref/library/instro.lib.config.NominalCorePublisherConfig.md#instro.lib.config.NominalCorePublisherConfig "instro.lib.config.NominalCorePublisherConfig") | Publisher config for streaming to a Nominal Core dataset. |
| [`FilePublisherConfig`](https://dev.nominal.io/instro/ref/library/instro.lib.config.FilePublisherConfig.md#instro.lib.config.FilePublisherConfig "instro.lib.config.FilePublisherConfig") | Publisher config for writing measurements to a local file. |

---

Errors raised by these methods are documented in [Exceptions](https://dev.nominal.io/instro/ref/library/exceptions.md).
