#!/usr/bin/python3
import argparse
import socket
import time
class PowerSupply:
def __init__(self, host, port):
self.host = host
self.port = port
self.s = socket.create_connection((host, port))
def send_cmd(self, cmd):
self.s.send(str(cmd+'\n').encode())
def default_setup(self):
self.send_cmd("*RST")
time.sleep(5)
self.send_cmd("INST OUT1")
self.send_cmd("VOLT 12")
self.send_cmd("CURR 2.6")
self.send_cmd("OUTP:CHAN ON")
self.send_cmd("INST OUT2")
self.send_cmd("VOLT 12")
self.send_cmd("CURR 1.3")
self.send_cmd("OUTP:CHAN ON")
self.send_cmd("INST OUT3")
self.send_cmd("VOLT 12")
self.send_cmd("CURR 1.2")
self.send_cmd("OUTP:CHAN ON")
self.send_cmd("OUTP:MAST ON")
def set_chan(self, chan, val):
if val.lower() not in ("on", "off"):
raise ValueError
if chan == "master":
self.send_cmd(f"OUTP:MAST {val}")
else:
self.send_cmd(f"INST {chan}")
self.send_cmd(f"OUTP:CHAN {val}")
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("host", help="The hostname or IP of the device")
parser.add_argument("-p", type=int, help="TCP port to connect to")
parser.add_argument("-d", action='store_true', help="Apply default settings")
parser.add_argument("-s", default=None, help="Set channel")
parser.add_argument("-c", default="master", help="Channel to operate on")
return parser.parse_args()
def main():
args = parse_args()
p = PowerSupply(args.host, args.p)
if args.d:
p.default_setup()
if args.s is not None:
p.set_chan(args.c, args.s)
if __name__ == '__main__':
main()