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')