Source code for lantz.drivers.examples.voltmeter

# -*- coding: utf-8 -*-

    Implements the Simple Voltmeter described in the Lantz tutorial.

    :copyright: 2015 by Lantz Authors, see AUTHORS for more details.
    :license: BSD, see LICENSE for more details.

from lantz import Feat, DictFeat, Action
from lantz.errors import InstrumentError
from lantz.messagebased import MessageBasedDriver

[docs]class LantzVoltmeter(MessageBasedDriver): """Lantz Signal Generator """ DEFAULTS = {'COMMON': {'write_termination': '\n', 'read_termination': '\n'}}
[docs] def query(self, command, *, send_args=(None, None), recv_args=(None, None)): answer = super().query(command, send_args=send_args, recv_args=recv_args) if answer == 'ERROR': raise InstrumentError return answer
@Feat() def idn(self): return self.query('?IDN') @DictFeat(units='V', keys=(0, 1)) def voltage(self, key): """Measure the voltage. """ return float(self.query('?MEAS {}'.format(key))) @DictFeat(values={0.1: '0', 1: '1', 10: '2', 100: '3', 1000: '4'}, keys=(0, 1)) def range(self, key): return self.query('?RANGE {}'.format(key)) @range def range(self, key, value): self.query('!RANGE {} {}'.format(key, value)) @Action() def auto_range(self, key): """Autoselect a range. """ self.query('!ARANGE {}'.format(key)) @Action() def calibrate(self): """Calibrate. """ self.query('!CAL') @Action() def self_test(self): """Self test """ self.query('!TES')