#!/usr/bin/env python import gpib import time class Charger(): def open(self, verbose = 0): self.g = gpib.Gpib() self.g.open(15) # HP6633B self.verbose = verbose if verbose > 0: print self.g.query('*IDN?') def off(self): self.g.ibwrt('outp 0') if self.verbose > 0: print self.g.query('outp?') def setup(self, v, i, limit = 1E-2): self.v = v self.i = i self.limit = limit self.g.ibwrt('volt %f' % v) if self.verbose > 0: print self.g.query('volt?') self.g.ibwrt('curr %f' % i) if self.verbose > 0: print self.g.query('curr?') def run(self): self.g.ibwrt('outp 1') if self.verbose > 0: print self.g.query('outp?') while 1: i=float(self.g.query('meas:curr?')) v1=float(self.g.query('meas:volt?')) t=time.asctime() print "%s U1 = %5.2f V I = %8.3f A" % (t, v1, i) if (abs(i) < self.limit): self.g.ibwrt('outp 0') if self.verbose > 0: print self.g.query('outp?') return try: time.sleep(10) except KeyboardInterrupt: self.g.ibwrt('outp 0') if self.verbose > 0: print self.g.query('outp?') return c = Charger() c.open() c.setup(v = 10.8, i = 2.0, limit = 0.065) c.run() c.setup(v = 14.6, i = 2, limit = 0.065) c.run()