Two Gpib objects to the same GPIB ENET 1000 (different pad) blocks
Two Gpib objects to the same GPIB ENET 1000 (different pad) blocks the python interpreter when we try to communicate with the second GPIB. Example:
>>> from bliss.comm.gpib import Gpib
>>> k12 = Gpib('enet://gpibid31os2r6', pad=12)
>>> k12.write_readline('*idn?\n')
'KEITHLEY INSTRUMENTS INC.,MODEL 6485, ...
>>> k27 = Gpib('enet://gpibid31os2r6', pad=27)
>>> k27.write_readline('*idn?\n')
<console blocked forever (no timeout)>
The same happens if the second gpib is created in another python process. I only tested with ENET 1000 I will try to do the same with ENET 100.
If I do Ctrl+C the traceback is:
^CTraceback (most recent call last):
File "<stdin>", line 1, in <module>
File "bliss/comm/gpib/_gpib.py", line 296, in write_readline
self._write(msg)
File "bliss/comm/gpib/_gpib.py", line 189, in rfunc
self.open()
File "bliss/comm/gpib/_gpib.py", line 235, in open
self._raw_handler.init()
File "bliss/comm/gpib/_gpib.py", line 81, in init
tmo = self._gpib_kwargs.get('tmo'))
File "bliss/comm/gpib/libnienet.py", line 150, in ibdev
enet_5000._scmd(0x50,'B',0x05)
File "bliss/comm/gpib/libnienet.py", line 139, in _scmd
return self._sresp()
File "bliss/comm/gpib/libnienet.py", line 129, in _sresp
ret = self._read()
File "bliss/comm/gpib/libnienet.py", line 120, in _read
rx = "".join(self._read_frags(many))
File "bliss/comm/gpib/libnienet.py", line 110, in _read_frags
header = self._recv(calcsize(self._headfmt))
File "bliss/comm/gpib/libnienet.py", line 87, in _recv
s += self._sock.recv(length-len(s))
File "/home/coutinho/.local/share/virtualenvs/bliss/local/lib/python2.7/site-packages/gevent/socket.py", line 387, in recv
return sock.recv(*args)
KeyboardInterrupt