""" **redP_mimoCoRB**: use mimoCoRB with the RedPitaya and redPoscdaq.py Input data is provided as numpy-arry of shape (number_of_channels, number_of_samples). """ import time import sys import redPoscdaq as rp from mimocorb.buffer_control import rbPut class redP_mimocorb(): """ Interface to the daq rinbuffer mimoCoRB for redPoscdaq """ def __init__(self, source_list=None, sink_list=None, observe_list=None, config_dict=None, **rb_info): # initialize mimoCoRB interface self.action = rbPut(config_dict=config_dict, sink_list=sink_list, **rb_info) self.number_of_channels = len(self.action.sink.dtype) self.events_required = 1000 if "eventcount" not in config_dict else config_dict["eventcount"] self.event_count = 0 self.active=True def data_sink(self, data): """function called by redPoscdaq """ if (self.events_required == 0 or self.event_count < self.events_required) and self.active: # deliver pulse data and no metadata active = self.action(data, None) # send data self.event_count += 1 else: active = self.action(None, None) # send None to signal end print("redPoscdaq exiting") sys.exit() def redP_to_rb(source_list=None, sink_list=None, observe_list=None, config_dict=None, **rb_info): """ Get data from RedPitaya and pass data to buffer The class mimocorb.buffer_control/rbImport is used to interface to the newBuffer and Writer classes of the package mimoCoRB.mimo_buffer This example may serve as a template for other data sources :param config_dict: configuration dictionary - events_required: number of events to taken - number_of_samples, sample_time_ns, pretrigger_samples and analogue_offset - decimation index, invert fags, trigger mode and trigger direction for RedPitaya """ # initialize mimocorb class inside redPoscidaq datasource= redP_mimocorb(config_dict=config_dict, sink_list=sink_list, **rb_info) #print("data source initialized") # start oscilloscope #print("starting osci") rp.run_rpControl(callback=datasource.data_sink, conf_dict=config_dict) #daq = run_mimoDAQ('redP_mimoCoRB.yaml') #daq.setup() #RB_1 = daq.ringbuffers['RB_1'] #sink_dict = RB_1.new_writer() #datasource= rp.redP_mimocorb(config_dict={}, sink_list=[sink_dict], RB_1='write') #print("data source initialized") #rp.run_rpControl(callback=datasource.data_sink) #print("starting DAQ") #daq.run()