#!/usr/bin/env python from gnuradio import gr, gru, eng_notation, optfir from gnuradio import audio from gnuradio import usrp from gnuradio import blks2 from gnuradio.eng_option import eng_option from gnuradio.wxgui import slider, powermate from gnuradio.wxgui import stdgui, fftsink, form,scopesink from optparse import OptionParser from usrpm import usrp_dbid import sys import math import wx def pick_subdevice(u): return usrp.pick_subdev(u, (usrp_dbid.TV_RX_REV_2, usrp_dbid.DBS_RX, usrp_dbid.DBS_RX_REV_2_1, usrp_dbid.BASIC_RX)) class rf_frontEnd(stdgui.gui_flow_graph): def __init__(self,frame,panel,vbox,argv): #stdgui2.std_top_block.__init__ (self,frame,panel,vbox,argv) stdgui.gui_flow_graph.__init__(self,frame,panel,vbox,argv) #-------------------------------------------------------------------------------- # User selects Target frequency #-------------------------------------------------------------------------------- parser=OptionParser(option_class=eng_option) parser.add_option("-f", "--freq", type="eng_float", default=2205e6, help="set frequency to FREQ", metavar="FREQ") (options, args) = parser.parse_args() if len(args) != 0: parser.print_help() sys.exit(1) #---------------------------------------------------------------------------------- self.frame = frame self.panel = panel self.freq = options.freq # build graph #self.connect(self.u,throttle) self.u = usrp.source_c() # usrp is data source in complex format - 8 bytes adc_rate = self.u.adc_rate() # ADC sampling rate- 64 MS/s usrp_decim = 200 # must be between 8-256 even number only self.u.set_decim_rate(usrp_decim) # set decimation rate of USRP usrp_rate = adc_rate / usrp_decim # usp output rate 320 kS/s chanfilt_decim = 1 rx_subdev_spec = pick_subdevice(self.u) # Autoselect Daughter Board self.u.set_mux(usrp.determine_rx_mux_value(self.u, rx_subdev_spec)) self.subdev = usrp.selected_subdev(self.u, rx_subdev_spec) print "Using RX d'board %s" % (self.subdev.side_and_name(),) # Displays side and name of DBSRX self.set_freq(self.freq) """ Covert complex to real """ op = gr.complex_to_float() self.connect(self.u,op) #-----------Display Recieved signal: TIME DOMAIN----------------------------------------------------------- scope = scopesink.scope_sink_f(self, panel, title="RECEIVED SIGNAL (REAL): TIME DOMAIN", sample_rate= usrp_rate) vbox.Add(scope.win,4,wx.EXPAND) self.connect(op,scope) #real bandpass signal to oscilloscope # -----------------RF front end tuning---------------------------------- def set_freq(self, target_freq): r = usrp.tune(self.u, 0, self.subdev, target_freq) if r: print " Tune to IF freq success %s" % (target_freq) #----RUN THE SOFTWARE------------------------------------------------------------ if __name__ == '__main__': app = stdgui.stdapp (rf_frontEnd, "ESEU Receiver") app.MainLoop ()