diff options
Diffstat (limited to 'qolab/hardware')
-rw-r--r-- | qolab/hardware/multimeter/hp_34401.py | 58 |
1 files changed, 40 insertions, 18 deletions
diff --git a/qolab/hardware/multimeter/hp_34401.py b/qolab/hardware/multimeter/hp_34401.py index 2d9abdd..ef9c647 100644 --- a/qolab/hardware/multimeter/hp_34401.py +++ b/qolab/hardware/multimeter/hp_34401.py @@ -1,28 +1,34 @@ from qolab.hardware.basic import BasicInstrument from qolab.hardware.multimeter import MultimeterSCPI -from qolab.hardware.scpi import SCPI_PROPERTY +from qolab.hardware.scpi import SCPI_PROPERTY from pyvisa import constants as pyvisa_constants import time + class HP_34401(MultimeterSCPI): - """ HP 34401 multimeter (same as Agilent) """ + """HP 34401 multimeter (same as Agilent)""" + """ rm = pyvisa.ResourceManager() instr=rm.open_resource('ASRL/dev/ttyUSB0::INSTR') """ + def __init__(self, resource, *args, **kwds): super().__init__(resource, *args, **kwds) - self.config['Device model']='HP 34401' - self.resource.read_termination = '\r\n' + self.config["Device model"] = "HP 34401" + self.resource.read_termination = "\r\n" self.resource.baud_rate = 9600 self.resource.data_bits = 8 self.resource.parity = pyvisa_constants.Parity.none self.resource.stop_bits = pyvisa_constants.StopBits.one self.resource.timeout = 5000 - self.switchTime = 0.5 # switch time in seconds for Function/Measurement change - self.deviceProperties.update({'Function'}) + self.switchTime = 0.5 # switch time in seconds for Function/Measurement change + self.deviceProperties.update({"Function"}) - rawFunction = SCPI_PROPERTY(scpi_prfx='SENSe:FUNCtion', ptype=str, doc=""" + rawFunction = SCPI_PROPERTY( + scpi_prfx="SENSe:FUNCtion", + ptype=str, + doc=""" Current measurement function (Voltmeter DC/AC, Currentmeter DC/AC, etc. Important! When assigning, string should be quoted, i.e. use: Function=\'"VOLT:DC"\' @@ -39,8 +45,8 @@ class HP_34401(MultimeterSCPI): "PERiod" "CONTinuity" "DIODe" - """ - ) + """, + ) def getFunction(self): rfunc = self.rawFunction @@ -76,20 +82,27 @@ class HP_34401(MultimeterSCPI): def isSensing(self, test): return test == self.rawFunction - Reading = SCPI_PROPERTY(scpi_prfx='SYSTem:REMote; :READ', ptype=float, doc='Report current measurement', no_setter=True) + Reading = SCPI_PROPERTY( + scpi_prfx="SYSTem:REMote; :READ", + ptype=float, + doc="Report current measurement", + no_setter=True, + ) # HP 34401 is tricky # when reading over serial interface the value of measurement/function, # the device need to be switched to REMOTE mode, but this leaves screen blank and unusable # so we have to do the dance with toRemote and toLocal - def getReadingWithSettingFunction(self, desired_function_string, function_internal_name): + def getReadingWithSettingFunction( + self, desired_function_string, function_internal_name + ): """ Get the reading but first check if we are set to do specific function/measurement. If the instrument set to do different function, set to desired one Note: the function name should be in quotes, i.e. '"Volt"' """ if not self.isSensing(function_internal_name): - self.rawFunction=desired_function_string + self.rawFunction = desired_function_string time.sleep(self.switchTime) # self.toRemote() # this is done inside of Reading ret = self.Reading @@ -99,39 +112,48 @@ class HP_34401(MultimeterSCPI): @BasicInstrument.tsdb_append def getVdc(self): return self.getReadingWithSettingFunction('"VOLTage:DC"', '"VOLT"') + @BasicInstrument.tsdb_append def getVac(self): return self.getReadingWithSettingFunction('"VOLTage:AC"', '"VOLT:AC"') + @BasicInstrument.tsdb_append def getAdc(self): return self.getReadingWithSettingFunction('"CURRent:DC"', '"CURR"') + @BasicInstrument.tsdb_append def getAac(self): return self.getReadingWithSettingFunction('"CURRent:AC"', '"CURR:AC"') + @BasicInstrument.tsdb_append def getResistance(self): return self.getReadingWithSettingFunction('"RESistance"', '"RES"') + @BasicInstrument.tsdb_append def getResistance4Wires(self): return self.getReadingWithSettingFunction('"FRESistance"', '"FRES"') + @BasicInstrument.tsdb_append def getDiode(self): return self.getReadingWithSettingFunction('"DIODe"', '"DIOD"') + @BasicInstrument.tsdb_append def getFreq(self): return self.getReadingWithSettingFunction('"FREQuency"', '"FREQ"') + @BasicInstrument.tsdb_append def getPeriod(self): return self.getReadingWithSettingFunction('"PERiod"', '"PER"') -if __name__ == '__main__': +if __name__ == "__main__": import pyvisa + print("testing") rm = pyvisa.ResourceManager() - print(rm.list_resources()) - instr=rm.open_resource('ASRL/dev/ttyUSB0::INSTR') + print(rm.list_resources()) + instr = rm.open_resource("ASRL/dev/ttyUSB0::INSTR") multimeter = HP_34401(instr) - print('------ Header start -------------') - print(str.join('\n', multimeter.getHeader())) - print('------ Header ends -------------') + print("------ Header start -------------") + print(str.join("\n", multimeter.getHeader())) + print("------ Header ends -------------") |