Bridge family · scpi-visa

OpenMHS family: scpi-visa

SCPI and VISA instruments as ScpiDriver command maps

Recipe published125 packageshardwaresimulatedreplay
On this page 9 sections
  1. Launch
  2. Registry coverage
  3. Applicability
  4. Capability mapping
  5. Safety
  6. Fidelity
  7. Pitfalls
  8. First task cards
  9. Sources

SCPI and VISA instruments as ScpiDriver command maps

Generated by MHS/registry/build_registry.py on 2026-10-20T00:00:00Z from 125 registry records and their task cards. A plan, not a conformance claim.

  • bridge_status: available
  • helper: ScpiDriver
  • exemplar: MHS/drivers/labs/thinksrs__srsinst.sr860

Launch

Every driver package starts the same way; per-repo configuration (environment id, model path, port, baud rate, VISA resource) lives in the package's driver.py, never in launch flags:

text
mhs serve <driver-dir>

A package is done when python3 -m mhs.driver check <driver-dir> --backend fake exits 0 (evidence contract_checked; a fake never yields an MHS-Device level).

Registry coverage

  • Repos: 125
  • Decisions: bridge-runtime 10, direct-driver 16, family-config 31, reference 21, skip 47
  • Waves: 0: 1, 1: 10, 2: 2, 3: 31, 6: 3, 9: 78
  • Dispatchable now: 0
  • Modes: hardware 57, replay 1, simulated 16

Applicability

The repo imports pyvisa, vxi11, usbtmc or pymeasure and is not a driver pack: triage rule 9, family:scpi. Exemplar: thinksrs/srsinst.sr860.

Capability mapping

native callOpenMHS targetnotes
*IDN?connect-time identity probe (idn.expect)not a capability; identity is published by mhs.devices.get
measurement query (for example MEAS:VOLT?)reads: cap.measure.voltage.v1 or the measure class that fitsparse to a number; the unit comes from the manual
setting (for example FREQ <value>)writes: cap.device.configure.v1limits cite the manual or the upstream code
*RST, INIT, ABORlifecycle, or an action with a catalogue classnever a configure write
SYST:ERR?error_query mapped to DriverFailed codes
output off / abortsafety_bindings: e-stop and safe state

Class ids come from python3 -m mhs.driver catalog search <words>. The deprecated classes cap.device.describe.v1, cap.world.state.v1, cap.world.snapshot.v1 and cap.world.restore.v1 are replaced by the protocol methods mhs.devices.get, mhs.resource.read, mhs.snapshot and mhs.restore.

Safety

The risk floor of a device is the highest catalogue risk_class of its classes (CAP-017); a driver may declare a higher risk, never a lower one. Hardware at R1 or above needs an @estop and a non-empty safe state. Sources, heaters, lasers and high-voltage supplies are common. Limits come from the instrument manual or the upstream code, never from the SCPI command name.

Fidelity

A transcript or a pyvisa-sim device file checks the command map; it cannot validate a measurement.

Pitfalls

SCPI carries no units; drain the error queue; one instrument per session; VISA backends differ (pyvisa-py versus a vendor VISA).

First task cards

  • gh.thinksrs/srsinst.sr860: family-config, wave 0, rank 2, MHS/registry/tasks/labs/thinksrs__srsinst.sr860.json
  • gh.python-ivi/python-ivi: family-config, wave 1, rank 8, MHS/registry/tasks/labs/python-ivi__python-ivi.json
  • gh.mclim9/rssd: family-config, wave 1, rank 13, MHS/registry/tasks/labs/mclim9__rssd.json
  • gh.asvela/keyoscacquire: family-config, wave 1, rank 17, MHS/registry/tasks/labs/asvela__keyoscacquire.json
  • gh.mba2d/test_equipment_control: family-config, wave 1, rank 19, MHS/registry/tasks/labs/mba2d__test_equipment_control.json

Sources

  • Task cards: MHS/registry/tasks/<track>/<owner>__<repo>.json (schema/taskcard.schema.json).
  • Triage rules and the helper table: MHS/registry/triage.py; curated decisions: MHS/registry/overrides/.
  • Driver API and gate: MHS/sdk/docs/driver-authoring.md; exemplars: MHS/drivers/.

Packages

Top 24 of 125 by stars. Filter the full list.

PackageTierRingEvidenceStars
pyvisa/pyvisa
pyvisa/pyvisa: device backend; protocol implementation/bridge for general test measurement instrument communication (lab
Tier B3agent read965
pyscada/pyscada
pyscada/pyscada: control framework for general (lab instrumentation track). OpenMHS plan: reference only (host). Declare
Tier D3static scan654
lxi-tools/lxi-tools
lxi-tools/lxi-tools: protocol implementation/bridge for electronic measurement (lab instrumentation track). OpenMHS plan
Tier D3static scan624
j123b567/scpi-parser
j123b567/scpi-parser: protocol implementation/bridge for electronic measurement (lab instrumentation track). OpenMHS pla
Tier D3static scan598
pyvisa/pyvisa-py
pyvisa/pyvisa-py: protocol implementation/bridge for electronic measurement (lab instrumentation track). OpenMHS plan: S
Tier B3static scan360
python-ivi/python-ivi
python-ivi/python-ivi: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: family-confi
Tier B1contract checked237
cnxy/visainstrument
cnxy/visainstrument: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: not integrated
Tier D3static scan223
abduznik/instrumation
abduznik/instrumation: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: direct-drive
Tier B1contract checked97
pyvisa/pyvisa-sim
pyvisa/pyvisa-sim: electronic instrument protocol simulation for microscopy imaging; optics; electronic measurement and
Tier A3agent read95
jana-marie/temperature-logger
jana-marie/temperature-logger: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: not
Tier D3static scan68
morgendagen/riden-dongle
morgendagen/riden-dongle: protocol implementation/bridge for electronic measurement (lab instrumentation track). OpenMHS
Tier D3static scan56
lachlangunn/oic
lachlangunn/oic: protocol implementation/bridge for electronic measurement (lab instrumentation track). OpenMHS plan: fa
Tier B1contract checked55
mclim9/rssd
mclim9/rssd: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: family-config with Scp
Tier B1contract checked51
atmelfan/scpi-rs
atmelfan/scpi-rs: protocol implementation/bridge for electronic measurement (lab instrumentation track). OpenMHS plan: n
Tier D3static scan49
bluehands/open-scpi-protocol-emulator
bluehands/open-scpi-protocol-emulator: device backend for electronic measurement (lab instrumentation track). OpenMHS pl
Tier D3static scan45
oe-fet/jisa
oe-fet/jisa: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: not integrated (overri
Tier D3static scan35
tiagocoutinho/sinstruments
tiagocoutinho/sinstruments: repository for microscopy imaging; optics; electronic measurement and DAQ (lab instrumentati
Tier B3static scan34
asvela/keyoscacquire
asvela/keyoscacquire: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: family-config
Tier B1contract checked30
markding/gpib-pyvisa
markding/gpib-pyvisa: auxiliary tooling for electronic measurement (lab instrumentation track). OpenMHS plan: not integr
Tier D3static scan29
microsoft/pyvisa-mock
microsoft/pyvisa-mock: protocol implementation/bridge for electronic measurement (lab instrumentation track). OpenMHS pl
Tier A3static scan26
usnistgov/labbench
usnistgov/labbench: device backend; control framework (lab instrumentation track). OpenMHS plan: not integrated (skip:to
Tier D3static scan25
isiscomputinggroup/lewis
isiscomputinggroup/lewis: repository for shared access and protocol infrastructure (lab instrumentation track). OpenMHS
Tier A3static scan24
mba2d/test_equipment_control
mba2d/test_equipment_control: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: famil
Tier B1contract checked24
asvela/tektronix-func-gen
asvela/tektronix-func-gen: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: direct-d
Tier B1contract checked21