gpib.py

changeset 7
2e2742648546
parent 2
cd9efa64f6da
child 9
3b50c46fca56
--- a/gpib.py	Mon Dec 10 21:40:39 2007 +0100
+++ b/gpib.py	Tue Dec 11 00:07:33 2007 +0100
@@ -10,21 +10,21 @@
     pass
 
 class GPIB(object):
-    _retries = 10
+    _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)
-        if mode == 1:
-            self.set_address(address)
+        self.set_address(address)
 
     def _set_cmd(self, cmd, value):
         self._cnx.write('++%s %d\r'%(cmd, value))
-        rval = self._read()
+        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"%(cmd, 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)
@@ -35,7 +35,7 @@
         self._mode = mode
         
     def _read(self):
-        for i in range(self._retries):    
+        for i in range(self._retries):
             rdata = self._cnx.readline()
             if rdata.strip() != "":
                 break

mercurial