Reads the data off of the device input buffer. Blocks for acquisition to finish with a timeout of 10 seconds
        
        :returns: numpy.ndarray -- the acquired data

def read(self):
        """Reads the data off of the device input buffer. Blocks for acquisition to finish with a timeout of 10 seconds
        
        :returns: numpy.ndarray -- the acquired data
        """
        r = c_int32()
        bufsize = self.npts*self.nchans
        inbuffer = np.zeros(bufsize)
        self.ReadAnalogF64(self.npts, 10.0, DAQmx_Val_GroupByChannel, inbuffer,
                           bufsize, byref(r), None)
        self.WaitUntilTaskDone(10.0)


        return inbuffer.reshape(self.nchans, self.npts)