gpib.py

changeset 2
cd9efa64f6da
child 7
2e2742648546
equal deleted inserted replaced
1:0670b1f5c155 2:cd9efa64f6da
1 """
2 gpib: create serial connection to GPIB-USB device (ProLogix is the
3 only supported device for now).
4 """
5 import serial
6 from serial.serialutil import SerialException
7 import time
8
9 class ConnectionError(Exception):
10 pass
11
12 class GPIB(object):
13 _retries = 10
14 def __init__(self, device="/dev/ttyUSB0", baudrate=115200, timeout=0.1,
15 address=0, mode=1):
16 self._cnx = serial.Serial(port=device, baudrate=baudrate, timeout=timeout)
17 self._timeout = timeout
18
19 self.set_mode(mode)
20 if mode == 1:
21 self.set_address(address)
22
23 def _set_cmd(self, cmd, value):
24 self._cnx.write('++%s %d\r'%(cmd, value))
25 rval = self._read()
26 if not rval.isdigit() or int(rval) != value:
27 raise ConnectionError("Can't set GPIB %s to %s"%(cmd, value))
28
29 def set_address(self, address):
30 self._set_cmd('addr', address)
31 self._adress = address
32
33 def set_mode(self, mode):
34 self._set_cmd('mode', mode)
35 self._mode = mode
36
37 def _read(self):
38 for i in range(self._retries):
39 rdata = self._cnx.readline()
40 if rdata.strip() != "":
41 break
42 time.sleep(self._timeout)
43 return rdata

mercurial