What's Changed
Rigol DS1054Z Oscilloscope Driver (Closes #118)
- Full SCPI driver for Rigol DS1054Z / MSO1000Z / DS1000Z series
- Basic control: autoscale, clear, run/stop/single, force trigger
- Acquisition config: type (NORMAL/AVERAGES/PEAK/HRESOLUTION), averages (2^n), memory depth, sample rate query
- Channel config (1–4): display, coupling (AC/DC/GND), scale, offset, probe, bandwidth limit (20M/OFF), invert, units — all with set/get round-trips and input validation
- Timebase: scale (s/div), offset, mode query
- Edge trigger: source, slope (POS/NEG/RFALL), level, sweep mode (AUTO/NORMAL/SINGLE), status query
- Waveform readout: preamble parsing (10-field Rigol format), unsigned WORD binary transfer, calibrated
get_waveform(ch)returning(time, voltage)arrays viaV=(raw-yref)*yinc+yorandt=(n-xref)*xinc+xor - Measurement helpers: frequency, duty cycle, Vpp, screenshot
- IEEE-488.2:
*IDN?,*RST,*CLS,*WAI,*OPC? - Registered via
@register_driver('SCOPE')with factory auto-detection routing for Rigol IDN keywords
Tests
- 52 unit tests (
tests/test_rigol.py) with mocked PyVISA transport covering all SCPI commands, calibration math, boundary validation, and context manager lifecycle - 15 regression tests (
tests/test_regression.py::TestRigolDS1054Z) covering preamble parsing, voltage conversion, time axis generation, channel/acquire/trigger/waveform validation
Bug Fixes
- Fix pre-existing flaky test:
test_simulated_keysight34461a_dmm— bumped resistance tolerance fromdelta=5.0todelta=10.0(noise sigma=2.0Ω, 2.5σ was failing ~1.1% of runs; now 5σ)
Docs
- New
docs/supported_instruments.md— complete list of all 21 supported instrument drivers across 8 brands with compatible model families - New
docs/experiments/rigol_ds1054z.md— integration guide with connection, channel config, waveform readout, and acquisition examples - New
examples/scope/rigol_ds1054z_waveform.py— standalone usage example - Updated mkdocs nav, API reference, index, README
Other
- Version bumped to 0.5.1
- 327 tests total (307 passed, 12 xfailed, 8 xpassed)
Full Changelog: v0.5.0...v0.5.1