On Fri, Dec 3, 2010 at 1:37 PM, ish13 <ish2...@gmail.com> wrote: > > Can someone please help and tell me what is wrong with my code. My idea is > to create a sine wave->modulate->demodulate->display on scope. I get the > following error below. Can some explain why? Also is my idea of my flow > graph a correct way to see if I get back the signal that was created? > > Thanks > Ismael > > > RuntimeError: iir_filter_ffd(14): insufficient connected output ports (1 > needed, 0 connected)
I ran your code on my machine and do not get this error. One thing you need to change, though, is that the output of wfm_rcv is floats, so you have to use a scope_sink_f, not scope_sink_c. Also, the sample rate in the scope sink is wrong, but that won't prevent it from running. My only guess is that there is a bug in the version you are running with either wfm_tx or wfm_rcv where a block wasn't properly connected up inside. Tom > """ > Transmit 1 signal. > > Outputs SSB (USB) signals on side A and side B at frequencies > specified on command line. > > Side B is 350 + 440 Hz tones. > """ > > from gnuradio import gr > from gnuradio.eng_notation import num_to_str, str_to_num > from gnuradio import usrp > from gnuradio import audio > from gnuradio import blks2 > from gnuradio.eng_option import eng_option > from optparse import OptionParser > from usrpm import usrp_dbid > from gnuradio.wxgui import stdgui2, scopesink2, form, slider > import wx > import math > import sys > > class dialtone_signal1(gr.hier_block2): > """ > tone (440 Hz). > """ > def __init__(self, sample_rate): > gr.hier_block2.__init__(self, "dialtone_signal1", > gr.io_signature(0, 0, gr.sizeof_float), > # Input signature > gr.io_signature(1, 1, gr.sizeof_float)) # > Output signature > > src1 = gr.sig_source_f (sample_rate, # sample rate > gr.GR_SIN_WAVE, # waveform type > 440, # frequency > 1.0, # amplitude > 0) # DC Offset > > self.connect(src1,self) > > > class my_top_block(stdgui2.std_top_block): > > def __init__(self, frame, panel, vbox, argv): > stdgui2.std_top_block.__init__(self, frame, panel, vbox, argv) > > self.frame = frame > self.panel = panel > > usage="%prog: [options] side-A-tx-freq side-B-tx-freq" > parser = OptionParser (option_class=eng_option, usage=usage) > parser.add_option("-T", "--tx-subdev-spec", type="subdev", > default=None, > help="select USRP Tx side A or B") > parser.add_option("-r", "--sample-rate", type="eng_float", > default=48000, > help="set sample rate to RATE (48000)") > parser.add_option("-O", "--audio-output", type="string", default="", > help="pcm output device name. E.g., hw:0,0 or > /dev/dsp") > parser.add_option("-n", "--frame-decim", type="int", default=1, > help="set oscope frame decimation factor to n > [default=1]") > parser.add_option("-v", "--v-scale", type="eng_float", default=1000, > help="set oscope initial V/div to SCALE > [default=%default]") > parser.add_option("-t", "--t-scale", type="eng_float", > default=49e-6, > help="set oscope initial s/div to SCALE > [default=50us]") > (options, args) = parser.parse_args () > > sample_rate = int(options.sample_rate) > self.audio_rate = 320e3 // 10 > print "Enter Carrier frequency: (XXX.X)" > freq= float(raw_input())*1e6 > > self.source1 = dialtone_signal1(sample_rate) > dst = audio.sink (sample_rate, options.audio_output) > self.modulator = blks2.wfm_tx(self.audio_rate, 320e3) > self.demodulator = blks2.wfm_rcv(320e3,int(self.audio_rate)) > > self.scope = scopesink2.scope_sink_c(panel, sample_rate=48e3, > frame_decim=options.frame_decim, > v_scale=options.v_scale, > t_scale=options.t_scale, > num_inputs=1) > > self.connect(self.source1,self.modulator,self.demodulator,self.scope) > > vbox.Add(self.scope.win, 10, wx.EXPAND) > > def set_freq(self, target_freq): > """ > Set the center frequency we're interested in. > > �...@param side: 0 = side A, 1 = side B > �...@param target_freq: frequency in Hz > �...@rtype: bool > > Tuning is a two step process. First we ask the front-end to > tune as close to the desired frequency as it can. Then we use > the result of that operation and our target_frequency to > determine the value for the digital up converter. > """ > > print "Tuning side A to %sHz" % num_to_str(target_freq) > r = self.u.tune(self.subdev.which(), self.subdev, target_freq) > if r: > print " r.baseband_freq =", num_to_str(r.baseband_freq) > print " r.dxc_freq =", num_to_str(r.dxc_freq) > print " r.residual_freq =", num_to_str(r.residual_freq) > print " r.inverted =", r.inverted > print " OK" > return True > > else: > print " Failed!" > > return False > > > if __name__ == '__main__': > try: > app = stdgui2.stdapp(my_top_block, "USRP O'scope", nstatus=1) > app.MainLoop() > except KeyboardInterrupt: > pass > -- > View this message in context: > http://old.nabble.com/Help-with-Code-tp30366569p30366569.html > Sent from the GnuRadio mailing list archive at Nabble.com. > > > _______________________________________________ > Discuss-gnuradio mailing list > Discuss-gnuradio@gnu.org > http://lists.gnu.org/mailman/listinfo/discuss-gnuradio > _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio