# Scope (Oscilloscope)

Oscilloscopes.

## Instrument and Abstract Driver

| [`InstroScope`](https://dev.nominal.io/instro/ref/instruments/instro.scope.InstroScope.md#instro.scope.InstroScope "instro.scope.InstroScope") | Oscilloscope instrument. |
| --- | --- |
| [`ScopeDriverBase`](https://dev.nominal.io/instro/ref/instruments/instro.scope.ScopeDriverBase.md#instro.scope.ScopeDriverBase "instro.scope.ScopeDriverBase") | Vendor scope driver contract. |

## Vendor Drivers

| Vendor | Model | Description |
| --- | --- | --- |
| Keysight | [`1200X`](https://dev.nominal.io/instro/ref/instruments/instro.scope.drivers.keysight_1200x.Keysight1200X.md#instro.scope.drivers.keysight_1200x.Keysight1200X "instro.scope.drivers.keysight_1200x.Keysight1200X") | SCPI driver for Keysight InfiniiVision 1200 X-Series oscilloscopes. |
| Keysight | [`3000T X (unstable)`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.scope.drivers.keysight_3000tx.Keysight3000TX.md#instro.unstable.scope.drivers.keysight_3000tx.Keysight3000TX "instro.unstable.scope.drivers.keysight_3000tx.Keysight3000TX") | SCPI driver for Keysight InfiniiVision 3000T X-Series oscilloscopes (2- and 4-channel DSO/MSO). |
| Siglent | [`SDS1000X-E`](https://dev.nominal.io/instro/ref/instruments/instro.scope.drivers.siglent_sds1000x_e.SiglentSDS1000XE.md#instro.scope.drivers.siglent_sds1000x_e.SiglentSDS1000XE "instro.scope.drivers.siglent_sds1000x_e.SiglentSDS1000XE") | SCPI driver for Siglent SDS1000X-E series oscilloscopes (SDS1104X-E and family). |
| Tektronix | [`2 Series MSO`](https://dev.nominal.io/instro/ref/instruments/instro.scope.drivers.tektronix_2series.Tektronix2SeriesMSO.md#instro.scope.drivers.tektronix_2series.Tektronix2SeriesMSO "instro.scope.drivers.tektronix_2series.Tektronix2SeriesMSO") | SCPI driver for Tektronix 2 Series MSO oscilloscopes (MSO22, MSO24). |

## Simulated Driver

| [`VirtualScope`](https://dev.nominal.io/instro/ref/instruments/instro.scope.drivers.virtual.VirtualScope.md#instro.scope.drivers.virtual.VirtualScope "instro.scope.drivers.virtual.VirtualScope") | Oscilloscope simulated in-process: no transport, server, or hardware. |
| --- | --- |
| [`SineWave`](https://dev.nominal.io/instro/ref/instruments/instro.scope.drivers.virtual.SineWave.md#instro.scope.drivers.virtual.SineWave "instro.scope.drivers.virtual.SineWave") | A sine wave at a `VirtualScope` channel's probe tip. |
| [`SquareWave`](https://dev.nominal.io/instro/ref/instruments/instro.scope.drivers.virtual.SquareWave.md#instro.scope.drivers.virtual.SquareWave "instro.scope.drivers.virtual.SquareWave") | A 50% duty-cycle square wave at a `VirtualScope` channel's probe tip. |

## Types & Configuration

| [`Coupling`](https://dev.nominal.io/instro/ref/instruments/instro.scope.types.Coupling.md#instro.scope.types.Coupling "instro.scope.types.Coupling") | Input coupling mode for an oscilloscope channel. |
| --- | --- |
| [`AcquisitionMode`](https://dev.nominal.io/instro/ref/instruments/instro.scope.types.AcquisitionMode.md#instro.scope.types.AcquisitionMode "instro.scope.types.AcquisitionMode") | Oscilloscope acquisition mode. |
| [`TriggerType`](https://dev.nominal.io/instro/ref/instruments/instro.scope.types.TriggerType.md#instro.scope.types.TriggerType "instro.scope.types.TriggerType") | Oscilloscope trigger type. |
| [`TriggerSlope`](https://dev.nominal.io/instro/ref/instruments/instro.scope.types.TriggerSlope.md#instro.scope.types.TriggerSlope "instro.scope.types.TriggerSlope") | Trigger edge slope. |
| [`TriggerMode`](https://dev.nominal.io/instro/ref/instruments/instro.scope.types.TriggerMode.md#instro.scope.types.TriggerMode "instro.scope.types.TriggerMode") | Trigger mode controlling how the oscilloscope waits for a trigger. |
| [`TriggerStatus`](https://dev.nominal.io/instro/ref/instruments/instro.scope.types.TriggerStatus.md#instro.scope.types.TriggerStatus "instro.scope.types.TriggerStatus") | Read-back trigger status. |
| [`AcquisitionState`](https://dev.nominal.io/instro/ref/instruments/instro.scope.types.AcquisitionState.md#instro.scope.types.AcquisitionState "instro.scope.types.AcquisitionState") | Oscilloscope acquisition run state. |
| [`ScopeMeasurementType`](https://dev.nominal.io/instro/ref/instruments/instro.scope.types.ScopeMeasurementType.md#instro.scope.types.ScopeMeasurementType "instro.scope.types.ScopeMeasurementType") | Built-in oscilloscope measurement types. |
| [`WaveformData`](https://dev.nominal.io/instro/ref/instruments/instro.scope.types.WaveformData.md#instro.scope.types.WaveformData "instro.scope.types.WaveformData") | Raw waveform from a fetch: `times` in ns relative to the trigger; `voltages` after probe attenuation. |
| [`ChannelState`](https://dev.nominal.io/instro/ref/instruments/instro.scope.types.ChannelState.md#instro.scope.types.ChannelState "instro.scope.types.ChannelState") | Tracked per-channel state. |
| [`TriggerState`](https://dev.nominal.io/instro/ref/instruments/instro.scope.types.TriggerState.md#instro.scope.types.TriggerState "instro.scope.types.TriggerState") | Tracked trigger state (source channel, type, level (V), slope, mode). |
| [`ScopeState`](https://dev.nominal.io/instro/ref/instruments/instro.scope.types.ScopeState.md#instro.scope.types.ScopeState "instro.scope.types.ScopeState") | Tracked scope state: per-channel (1-based), trigger, acquisition mode, average count, timebase. |
| [`ScopeConfig`](https://dev.nominal.io/instro/ref/instruments/instro.scope.config.ScopeConfig.md#instro.scope.config.ScopeConfig "instro.scope.config.ScopeConfig") | Validated config for constructing an InstroScope from JSON. |
| [`AcquisitionConfig`](https://dev.nominal.io/instro/ref/instruments/instro.scope.config.AcquisitionConfig.md#instro.scope.config.AcquisitionConfig "instro.scope.config.AcquisitionConfig") | Initial acquisition state, applied through the InstroScope setters on `open()`. |
| [`ChannelConfig`](https://dev.nominal.io/instro/ref/instruments/instro.scope.config.ChannelConfig.md#instro.scope.config.ChannelConfig "instro.scope.config.ChannelConfig") | Initial per-channel state and polled measurements, applied through the InstroScope setters on `open()`. |
| [`TriggerConfig`](https://dev.nominal.io/instro/ref/instruments/instro.scope.config.TriggerConfig.md#instro.scope.config.TriggerConfig "instro.scope.config.TriggerConfig") | Initial trigger state, applied through the InstroScope setters on `open()`. |
| [`VisaDriverConfig`](https://dev.nominal.io/instro/ref/instruments/instro.scope.config.VisaDriverConfig.md#instro.scope.config.VisaDriverConfig "instro.scope.config.VisaDriverConfig") | Driver config for a VISA-connected scope. |
| [`VirtualDriverConfig`](https://dev.nominal.io/instro/ref/instruments/instro.scope.config.VirtualDriverConfig.md#instro.scope.config.VirtualDriverConfig "instro.scope.config.VirtualDriverConfig") | Driver config for a virtual scope: simulated in-process, with no connection. |
| [`SignalConfig`](https://dev.nominal.io/instro/ref/instruments/instro.scope.config.SignalConfig.md#instro.scope.config.SignalConfig "instro.scope.config.SignalConfig") | A virtual scope channel's signal: built as a `SineWave` or `SquareWave`. |
| [`resolve_scope_from_config`](https://dev.nominal.io/instro/ref/instruments/instro.scope.config.resolve_scope_from_config.md#instro.scope.config.resolve_scope_from_config "instro.scope.config.resolve_scope_from_config") | Resolve a validated ScopeConfig into the `(name, driver, num_channels, config_publishers, poll_interval)` InstroScope 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).
