Rev 515 | Blame | Compare with Previous | Last modification | View Log | Download
#!/usr/bin/env python################################################### Gnuradio Python Flow Graph# Title: Sonar# Author: Kaklik# Description: Sonar waform generator# Generated: Sat Feb 21 11:50:42 2009##################################################from gnuradio import audiofrom gnuradio import grfrom gnuradio.wxgui import scopesink2from gnuradio.wxgui import waterfallsink2from grc_gnuradio import wxgui as grc_wxguiimport wxclass Sonar(grc_wxgui.top_block_gui):def __init__(self):grc_wxgui.top_block_gui.__init__(self,title="GRC - Executing: Sonar",icon="/usr/local/share/icons/hicolor/32x32/apps/gnuradio-grc.png",)################################################### Variables##################################################self.samp_rate = samp_rate = 96000self.frequency = frequency = 20000self.ampl = ampl = .4################################################### Controls##################################################_frequency_control = grc_wxgui.slider_horizontal_control(window=self.GetWin(),callback=self.set_frequency,label='frequency',value=frequency,min=5000,max=30000,num_steps=1000,slider_length=500,)self.Add(_frequency_control)_ampl_control = grc_wxgui.slider_horizontal_control(window=self.GetWin(),callback=self.set_ampl,label="Volume",value=ampl,min=0,max=.5,num_steps=100,slider_length=200,)self.GridAdd(_ampl_control, 0, 0, 1, 2)################################################### Blocks##################################################self.audio_sink = audio.sink(48000, "hw:1,0", True)self.audio_source_0 = audio.source(48000, "hw:1,0", True)self.gr_sig_source_x = gr.sig_source_f(samp_rate, gr.GR_SIN_WAVE, frequency, ampl, 0)self.wxgui_scopesink2_0 = scopesink2.scope_sink_f(self.GetWin(),title="Scope Plot",sample_rate=samp_rate*2,frame_decim=15,v_scale=None,t_scale=.0001,num_inputs=2,)self.wxgui_scopesink2_0.win.set_format_line()self.Add(self.wxgui_scopesink2_0.win)self.wxgui_waterfallsink2_0 = waterfallsink2.waterfall_sink_f(self.GetWin(),baseband_freq=0,y_per_div=10,ref_level=50,sample_rate=samp_rate,fft_size=512,fft_rate=15,average=True,avg_alpha=None,title="Waterfall Plot",)self.Add(self.wxgui_waterfallsink2_0.win)################################################### Connections##################################################self.connect((self.gr_sig_source_x, 0), (self.audio_sink, 0))self.connect((self.gr_sig_source_x, 0), (self.wxgui_scopesink2_0, 0))self.connect((self.audio_source_0, 0), (self.wxgui_scopesink2_0, 1))self.connect((self.audio_source_0, 0), (self.wxgui_waterfallsink2_0, 0))def set_samp_rate(self, samp_rate):self.samp_rate = samp_rateself.gr_sig_source_x.set_sampling_freq(self.samp_rate)self.wxgui_scopesink2_0.set_sample_rate(self.samp_rate*2)self.wxgui_waterfallsink2_0.set_sample_rate(self.samp_rate)def set_frequency(self, frequency):self.frequency = frequencyself.gr_sig_source_x.set_frequency(self.frequency)def set_ampl(self, ampl):self.ampl = amplself.gr_sig_source_x.set_amplitude(self.ampl)if __name__ == '__main__':if gr.enable_realtime_scheduling() != gr.RT_OK:print "Error: failed to enable realtime scheduling."tb = Sonar()tb.Run()