# Fluke8845A

## class Fluke8845A(visa_resource: str | VisaConfig)[source]

Bases: [`Agilent34401A`](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")

Fluke 8845A 6.5-digit DMM, driven through its Agilent 34401A-compatible `8845` command set.

The meter’s default remote command set (`8845`) is compatible with the Agilent 34401A, so
every command comes from [`Agilent34401A`](https://dev.nominal.io/instro/ref/instruments/instro.dmm.drivers.agilent_a34401a.Agilent34401A.md#instro.dmm.drivers.agilent_a34401a.Agilent34401A "instro.unstable.dmm.drivers.fluke_8845a.Agilent34401A") and this class adds none. Two front-panel settings
must be made before use; neither can be changed over the remote interface, and both are
non-volatile:

- **Command set** `8845` (INSTR SETUP → COMMANDS → 8845). The Fluke 45 emulation command set
  is not supported.
- **RS-232 mode** `COMPUTER` (INSTR SETUP → PORT IF → RS232 → COMP/TERM ECHO → COMPUTER).
  `TERMINAL` mode echoes each command and prints a `NNN>` prompt, which the driver reads
  back as the reply; `open` then fails with an error such as
  `Fluke 8845A reported error: *CLS`.

Over RS-232, also match the meter’s line settings to the `VisaConfig` defaults: 9600 baud,
8 data bits, no parity, 1 stop bit, no flow control, and EOL `CR LF`.

Create the driver; the connection opens on `open`.

Parameters:
:   **visa_resource** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* [*VisaConfig*](https://dev.nominal.io/instro/ref/library/instro.lib.transports.visa.VisaConfig.md#instro.lib.transports.visa.VisaConfig "instro.unstable.dmm.drivers.fluke_8845a.VisaConfig"))

    VISA resource string, e.g. `"ASRL6::INSTR"` for
    RS-232 on COM6, or a [`VisaConfig`](https://dev.nominal.io/instro/ref/library/instro.lib.transports.visa.VisaConfig.md#instro.lib.transports.visa.VisaConfig "instro.unstable.dmm.drivers.fluke_8845a.VisaConfig") to customize the serial line or backend.

Example:

```
from instro.dmm import InstroDMM, MeasurementFunction
from instro.unstable.dmm.drivers import Fluke8845A

dmm = InstroDMM(name="fluke", driver=Fluke8845A("ASRL6::INSTR"))
dmm.open()
dmm.set_measurement_function(MeasurementFunction.DC_VOLTAGE)
volts = dmm.read().latest
dmm.close()
```

Methods

| [`close`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.close "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.close") | Close the underlying transport. |
| --- | --- |
| [`measure_ac_current`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.measure_ac_current "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.measure_ac_current") | Trigger an AC-current measurement and return the value (amperes RMS, vendor-dependent). |
| [`measure_ac_voltage`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.measure_ac_voltage "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.measure_ac_voltage") | Trigger an AC-voltage measurement and return the value (volts RMS, vendor-dependent). |
| [`measure_dc_current`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.measure_dc_current "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.measure_dc_current") | Trigger a DC-current measurement and return the value (amperes). |
| [`measure_dc_voltage`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.measure_dc_voltage "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.measure_dc_voltage") | Trigger a DC-voltage measurement and return the value (volts). |
| [`measure_four_wire_resistance`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.measure_four_wire_resistance "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.measure_four_wire_resistance") | Trigger a 4-wire-resistance measurement and return the value (ohms). |
| [`measure_resistance`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.measure_resistance "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.measure_resistance") | Trigger a 2-wire-resistance measurement and return the value (ohms). |
| [`open`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.open "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.open") | Open transport, `*CLS`, then `SYST:REM` to disable the front panel and RS-232 echo. |
| [`set_ac_current_nplc`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_ac_current_nplc "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_ac_current_nplc") | Set AC-current integration time to `nplc` power-line cycles. |
| [`set_ac_current_range`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_ac_current_range "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_ac_current_range") | Cache the range for `MEAS:...?` calls. |
| [`set_ac_voltage_nplc`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_ac_voltage_nplc "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_ac_voltage_nplc") | Set AC-voltage integration time to `nplc` power-line cycles. |
| [`set_ac_voltage_range`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_ac_voltage_range "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_ac_voltage_range") | Cache the range for `MEAS:...?` calls. |
| [`set_aperture_seconds`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_aperture_seconds "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_aperture_seconds") | Set integration time directly in seconds. |
| [`set_dc_current_nplc`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_dc_current_nplc "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_dc_current_nplc") | Set DC-current integration time to `nplc` power-line cycles. |
| [`set_dc_current_range`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_dc_current_range "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_dc_current_range") | Cache the range for `MEAS:...?` calls. |
| [`set_dc_voltage_nplc`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_dc_voltage_nplc "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_dc_voltage_nplc") | Set DC-voltage integration time to `nplc` power-line cycles. |
| [`set_dc_voltage_range`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_dc_voltage_range "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_dc_voltage_range") | Cache the range for `MEAS:...?` calls. |
| [`set_digits`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_digits "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_digits") | Set the digits (4, 5, or 6) used as the resolution argument in `MEAS:...?` commands. |
| [`set_four_wire_resistance_nplc`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_four_wire_resistance_nplc "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_four_wire_resistance_nplc") | Set 4-wire-resistance integration time to `nplc` power-line cycles. |
| [`set_four_wire_resistance_range`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_four_wire_resistance_range "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_four_wire_resistance_range") | Cache the range for `MEAS:...?` calls. |
| [`set_measurement_function`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_measurement_function "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_measurement_function") | Configure the function for subsequent reads via a dummy measurement. |
| [`set_two_wire_resistance_nplc`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_two_wire_resistance_nplc "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_two_wire_resistance_nplc") | Set 2-wire-resistance integration time to `nplc` power-line cycles. |
| [`set_two_wire_resistance_range`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.md#instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_two_wire_resistance_range "instro.unstable.dmm.drivers.fluke_8845a.Fluke8845A.set_two_wire_resistance_range") | Cache the range for `MEAS:...?` calls. |

### close() → None

Close the underlying transport. Idempotent.

### measure_ac_current() → float

Trigger an AC-current measurement and return the value (amperes RMS, vendor-dependent).

### measure_ac_voltage() → float

Trigger an AC-voltage measurement and return the value (volts RMS, vendor-dependent).

### measure_dc_current() → float

Trigger a DC-current measurement and return the value (amperes).

### measure_dc_voltage() → float

Trigger a DC-voltage measurement and return the value (volts).

### measure_four_wire_resistance() → float

Trigger a 4-wire-resistance measurement and return the value (ohms).

Default raises `NotImplementedError`; override on drivers whose
instrument has dedicated sense leads (e.g. Agilent 34401A).

### measure_resistance() → float

Trigger a 2-wire-resistance measurement and return the value (ohms).

### open() → None

Open transport, `*CLS`, then `SYST:REM` to disable the front panel and RS-232 echo.

### set_ac_current_nplc(nplc: float) → None

Set AC-current integration time to `nplc` power-line cycles.

### set_ac_current_range(value: float | None) → None

Cache the range for `MEAS:...?` calls. The 34401A’s cache is shared across functions, so every `set_*_range` delegates here.

### set_ac_voltage_nplc(nplc: float) → None

Set AC-voltage integration time to `nplc` power-line cycles.

### set_ac_voltage_range(value: float | None) → None

Cache the range for `MEAS:...?` calls. The 34401A’s cache is shared across functions, so every `set_*_range` delegates here.

### set_aperture_seconds(seconds: float) → None

Set integration time directly in seconds.

Default raises `NotImplementedError`. Mutually exclusive with
`set_aperture_nplc` on a given driver — vendors typically expose
one or the other.

### set_dc_current_nplc(nplc: float) → None

Set DC-current integration time to `nplc` power-line cycles.

### set_dc_current_range(value: float | None) → None

Cache the range for `MEAS:...?` calls. The 34401A’s cache is shared across functions, so every `set_*_range` delegates here.

### set_dc_voltage_nplc(nplc: float) → None

Set DC-voltage integration time to `nplc` power-line cycles.

### set_dc_voltage_range(value: float | None) → None

Cache the range for `MEAS:...?` calls. The 34401A’s cache is shared across functions, so every `set_*_range` delegates here.

### set_digits(n: int) → None

Set the digits (4, 5, or 6) used as the resolution argument in `MEAS:...?` commands.

### set_four_wire_resistance_nplc(nplc: float) → None

Set 4-wire-resistance integration time to `nplc` power-line cycles.

### set_four_wire_resistance_range(value: float | None) → None

Cache the range for `MEAS:...?` calls. The 34401A’s cache is shared across functions, so every `set_*_range` delegates here.

### set_measurement_function( function: MeasurementFunction, ) → None

Configure the function for subsequent reads via a dummy measurement.

### set_two_wire_resistance_nplc(nplc: float) → None

Set 2-wire-resistance integration time to `nplc` power-line cycles.

### set_two_wire_resistance_range(value: float | None) → None

Cache the range for `MEAS:...?` calls. The 34401A’s cache is shared across functions, so every `set_*_range` delegates here.
