Tue, 11 Dec 2007 00:07:33 +0100
fixes in gpib module
""" gpib: create serial connection to GPIB-USB device (ProLogix is the only supported device for now). """ import serial from serial.serialutil import SerialException import time class ConnectionError(Exception): pass class GPIB(object): _retries = 15 def __init__(self, device="/dev/ttyUSB0", baudrate=115200, timeout=0.1, address=0, mode=1): self._cnx = serial.Serial(port=device, baudrate=baudrate, timeout=timeout) self._timeout = timeout self.set_mode(mode) self.set_address(address) def _set_cmd(self, cmd, value): self._cnx.write('++%s %d\r'%(cmd, value)) self._cnx.write('++%s\r'%(cmd)) rval = self._read().strip() if not rval.isdigit() or int(rval) != value: raise ConnectionError("Can't set GPIB %s to %s [ret=%s]"%(cmd, value, repr(rval))) def set_address(self, address): self._set_cmd('addr', address) self._adress = address def set_mode(self, mode): self._set_cmd('mode', mode) self._mode = mode def _read(self): for i in range(self._retries): rdata = self._cnx.readline() if rdata.strip() != "": break time.sleep(self._timeout) return rdata