Using instro#
Using instro with some more detail
This page discusses details about using instro.
Instruments#
Two ways to get data#
You can acquire measurements from an instrument in two ways. The difference is who triggers the reads and how often.
Background acquisition |
On-demand acquisition |
|
|---|---|---|
How |
Call |
Call read methods ( |
Best for |
Apps where data should always be available and publishing. |
Apps that need measurements only at specific times; lower system and bus load. DMMs are a good example. |
open()/close() or with block#
Instruments can also be open/closed automatically using a with block.
Best when the instrument’s lifetime spans many functions, or when you want to interleave setup and teardown across event handlers, fixtures, or REPL sessions.
from instro.psu import InstroPSU
from instro.psu.drivers import SimulatedPSU
psu = InstroPSU(
name="bench_psu",
driver=SimulatedPSU("TCPIP0::127.0.0.1::5025::SOCKET"),
num_channels=2,
)
psu.open()
psu.set_voltage(5.0, channel=1)
psu.set_current_limit(1.0, channel=1)
psu.output_enable(True, channel=1)
voltage = psu.get_voltage(channel=1)
print(f"V: {voltage.latest:.3f} V")
psu.output_enable(False, channel=1)
psu.close()
Best for scripts and tests where the instrument is used inside a single scope. close() runs automatically on the way out, even if an exception is raised.
from instro.psu import InstroPSU
from instro.psu.drivers import SimulatedPSU
with InstroPSU(
name="bench_psu",
driver=SimulatedPSU("TCPIP0::127.0.0.1::5025::SOCKET"),
num_channels=2,
) as psu:
psu.set_voltage(5.0, channel=1)
psu.set_current_limit(1.0, channel=1)
psu.output_enable(True, channel=1)
voltage = psu.get_voltage(channel=1)
print(f"V: {voltage.latest:.3f} V")