discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Help with Code


From: Tom Rondeau
Subject: Re: [Discuss-gnuradio] Help with Code
Date: Fri, 3 Dec 2010 16:26:18 -0500

On Fri, Dec 3, 2010 at 1:37 PM, ish13 <address@hidden> 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.
>
>               address@hidden side: 0 = side A, 1 = side B
>               address@hidden target_freq: frequency in Hz
>               address@hidden: 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
> address@hidden
> http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]