Chroma 61604/pychroma.py
Jump to navigation
Jump to search
"""This module implements the Chroma AC Source control.""" import sigrok.core as sr from sigrok.core.classes import ConfigKey class ACSource(object): sr_ctx = 0 def __init__(self, port, portcomm='19200/8n1', model=0): if not ACSource.sr_ctx: ACSource.sr_ctx = sr.Context.create() driver = ACSource.sr_ctx.drivers['scpi-pps'] devs = driver.scan(conn=port, serialcomm=portcomm) if not devs: raise hell self.device = devs[0] if model and model != self.device.model: print('Expected model %s, but found model %s on port %s' % (model, self.device.model, port)) raise hell self.device.open() self.output = self.device.channel_groups['1'] def set_param(self, what, value): sr_key = ConfigKey.get_by_identifier(what) self.output.config_set(sr_key, value) def read_param(self, what): sr_key = ConfigKey.get_by_identifier(what) return self.output.config_get(sr_key) def enable_output(self): self.set_param('output_enabled', True) def disable_output(self): self.set_param('output_enabled', False) def set_voltage(self, volts): self.set_param('output_voltage_target', volts) def set_ocp_limit(self, amps): self.set_param('ocp_threshold', amps) def get_ocp_limit(self): return self.set_param('ocp_threshold') def set_ovp_limit(self, amps): self.set_param('ovp_threshold', amps) def get_ovp_limit(self): return self.set_param('ovp_threshold') def measure_voltage(self): return self.read_param('output_voltage') def measure_current(self): return self.read_param('output_current')