def _export_jls(self): view = self._view cfg = self._cfg sampling_frequency = view.sampling_frequency sample_step_size = sampling_frequency stream_buffer = StreamBuffer(sampling_frequency * 2, []) data_recorder = DataRecorder(cfg['filename'], calibration=view.calibration.data, sampling_frequency=sampling_frequency) data_recorder.process(stream_buffer) try: idx_start = cfg['sample_id_start'] idx_stop = cfg['sample_id_stop'] idx_range = idx_stop - idx_start idx = idx_start self.sigProgress.emit(0) while not self._stop and idx < idx_stop: log.info('export_jls iteration') idx_next = idx + sample_step_size if idx_next > idx_stop: idx_next = idx_stop data = view.raw_get(idx, idx_next) log.info('export_jls (%d, %d) -> %d', idx, idx_next, len(data)) stream_buffer.insert_raw(data) stream_buffer.process() data_recorder.process(stream_buffer) idx = idx_next self.sigProgress.emit(int(1000 * (idx - idx_start) / idx_range)) finally: data_recorder.close()
def _create_large_file(self, samples=None): """Create a large file. :param samples: The total number of samples which will be rounded to a full USB packet. """ sample_rate = 2000000 samples_total = sample_rate * 2 packets_per_burst = 128 bursts = int( np.ceil(samples / (SAMPLES_PER_PACKET * packets_per_burst))) stream_buffer = StreamBuffer(sample_rate, [100]) fh = io.BytesIO() d = DataRecorder(fh, sampling_frequency=sample_rate) d.process(stream_buffer) for burst_index in range(bursts): packet_index = burst_index * packets_per_burst frames = usb_packet_factory_signal(packet_index, count=packets_per_burst, samples_total=samples_total) stream_buffer.insert(frames) stream_buffer.process() d.process(stream_buffer) d.close() fh.seek(0) # dfr = datafile.DataFileReader(fh) # dfr.pretty_print() # fh.seek(0) return fh
def _create_file(self, packet_index, count=None): stream_buffer = StreamBuffer(2000, [10]) stream_buffer.suppress_mode = 'off' if packet_index > 0: data = usb_packet_factory(0, packet_index - 1) stream_buffer.insert(data) stream_buffer.process() fh = io.BytesIO() d = DataRecorder(fh, sampling_frequency=1000) d.process(stream_buffer) data = usb_packet_factory(packet_index, count) stream_buffer.insert(data) stream_buffer.process() d.process(stream_buffer) d.close() fh.seek(0) # from joulescope import datafile # dfr = datafile.DataFileReader(fh) # dfr.pretty_print() # fh.seek(0) return fh