Source code for src.timebase

from collections import namedtuple
from typing import Optional

TIMEBASE = namedtuple(
    "TIMEBASE", "mode main_scale main_offset delay_enable delay_scale delay_offset"
)


[docs]def timebase( oscope, mode: Optional[str] = None, main_scale: Optional[float] = None, main_offset: Optional[float] = None, delay_enable: Optional[bool] = None, delay_scale: Optional[float] = None, delay_offset: Optional[float] = None, ): """ Send commands to control an oscilloscope's horizontal scaling. All arguments are optional. Args: mode (str): ``:TIMebase:MODE`` main_scale (float): ``:TIMebase:SCALe`` main_offset (float): ``:TIMebase:OFFSet`` delay_enable (bool): ``:TIMebase:DELay:ENABle`` delay_scale (float): ``:TIMebase:DELay:SCALe`` delay_offset (float): ``:TIMebase:DELay:OFFSet`` Returns: A namedtuple with fields corresponding to the named arguments of this function. All fields are queried regardless of which arguments were initially provided. """ if mode is not None: oscope.write(":TIM:MODE " + mode) if main_scale is not None: oscope.write(":TIM:SCAL {:0.10f}".format(main_scale)) if main_offset is not None: oscope.write(":TIM:OFFS {:0.10f}".format(main_offset)) if delay_enable is not None: oscope.write(":TIM:DEL:ENAB {:d}".format(delay_enable)) if delay_scale is not None: oscope.write(":TIM:DEL:SCAL {:0.10f}".format(delay_scale)) if delay_offset is not None: oscope.write(":TIM:DEL:OFFS {:0.10f}".format(delay_offset)) return TIMEBASE( mode=oscope.query(":TIM:MODE?"), main_scale=float(oscope.query(":TIM:SCAL?")), main_offset=float(oscope.query(":TIM:OFFS?")), delay_enable=bool(int(oscope.query(":TIM:DEL:ENAB?"))), delay_scale=float(oscope.query(":TIM:DEL:SCAL?")), delay_offset=float(oscope.query(":TIM:DEL:OFFS?")), )