In article <[EMAIL PROTECTED]>, Madhusudan Singh <URL:mailto:[EMAIL PROTECTED]> wrote: > python-gpib provides Gpib.py (see end of post) for Linux. > > I am trying to use the method called read. I usually use it without > arguments (the default length being 512). However, I am trying to read in a > string with some 16,000 comma separated floating point numbers.
I've never used python-gpib, but I'm using National Instrument GPIB cards with a wrapper that loads the driver DLL using ctypes. Usually for such long data you have to perform multiple read operations and check the card/bus status whether the read operation is finished (Code "END" - "END or EOS detected"). So with the National Instrument drivers I'm checking whether ibsta is something like 0x2000, i.e. 1<<13. The following code is a snippet from my sources. Hope this helps. From your post I can see that python-gpib also provides an ibsta method. I'd expect that END is also 1<<13. Regards, Dietmar import ctypes gpib = ctypes.windll.LoadLibrary("gpib-32") # read buffer _bufsize = 1024 _buffer = ctypes.c_buffer(_bufsize) _readstatus = 0x2000 _errorstatus = 0x8000 def get_ibcntl(): return ctypes.c_int.in_dll(gpib, "user_ibcntl").value def ibrd(handle): ret = [] ibsta=0 global _buffer while not (ibsta & _readstatus): ibsta = gpib.ibrd(handle, _buffer, _bufsize) new = _buffer.raw[:get_ibcntl()] ret.append( new ) if ibsta & _errorstatus: _raise(GPIBIOError, "ibrd(handle=%d): Could not read data."%handle, ibsta ) ret = "".join(ret) if '\012' in ret: ret = ret[0:string.find(ret, '\012')] if '\015' in ret: ret = ret[0:string.find(ret, '\015')] return ret -- http://mail.python.org/mailman/listinfo/python-list