code: def next_blob(self):
          
          blob_file = self.blob_file
          try:
              preamble = DAQPreamble(file_obj=blob_file)
          except struct.error:
              raise StopIteration
  
          try:
              data_type = DATA_TYPES[preamble.data_type]
          except KeyError:
              log.error("Unkown datatype: {0}".format(preamble.data_type))
              data_type = 'Unknown'
  
          blob = Blob()
          blob[data_type] = None
          blob['DAQPreamble'] = preamble
  
          if data_type == 'DAQSummaryslice':
              daq_frame = DAQSummaryslice(blob_file)
              blob[data_type] = daq_frame
              blob['DAQHeader'] = daq_frame.header
          elif data_type == 'DAQEvent':
              daq_frame = DAQEvent(blob_file)
              blob[data_type] = daq_frame
              blob['DAQHeader'] = daq_frame.header
          else:
              log.warning(
                  "Skipping DAQ frame with data type code '{0}'.".format(
                      preamble.data_type
                  )
              )
              blob_file.seek(preamble.length - DAQPreamble.size, 1)
  
          return blob
docs: Get the next frame from file