discuss-gnuradio
[Top][All Lists]
Advanced

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

[Discuss-gnuradio] Handling Messages


From: ali siddiqi
Subject: [Discuss-gnuradio] Handling Messages
Date: Thu, 21 May 2009 10:37:28 +0600

Hi,

I am trying to make a flowgraph as given:

signal source --> stream2vector -->  fft -->  c2m --> msg_sink

If the size of fft is 4096, then I want to retrieve these 4096 points in python and then do simple maths and logic based on some of the values within these 4096 points within python.

And then based on the  result, I want to initiate another flowgraph!

Currently, there is an error between the interface between c2m and msg_sink.

The code is:

class top(gr.top_block):
        def __init__(self):
            gr.top_block.__init__(self)
      
            ##################################################
            # Variables
            ##################################################
            self.samp_rate = samp_rate = 32000
   
            ##################################################
            # Blocks
            ##################################################
            self.sigsource = gr.sig_source_c(samp_rate, gr.GR_COS_WAVE, 1000, 10, 0)
            self.sigsource1 = gr.sig_source_c(samp_rate, gr.GR_COS_WAVE, 2000, 20, 0)
            self.sigadder = gr.add_vcc(1)
   
            fftsize = 4096

            mywin = window.blackmanharris(fftsize)

            fft = gr.fft_vcc(fftsize, True, mywin)

            c2m = gr.complex_to_mag(fftsize)
      
            s2f1 = gr.short_to_float()

            s2f2 = gr.short_to_float()

            # Vector Sink/Source

            ss2v = gr.stream_to_vector(gr.sizeof_gr_complex, fftsize)

            v2ss = gr.vector_to_stream(gr.sizeof_float, fftsize)

            # Message Settings

            self.qsize = 10

            self.msgq0 = gr.msg_queue(self.qsize) # queue amplitude

            # Message sink

            m_sink0 = gr.message_sink(gr.sizeof_float, self.msgq0, True)
        
            self.connect((self.sigsource, 0), (self.sigadder, 0))
            self.connect((self.sigsource1, 0), (self.sigadder, 1))

            self.connect(self.sigadder, ss2v, fft, c2m, m_sink0)


def main ():

        # Start Top Block
        tb = top()

        #Start Flowgraph
        tb.start()

        # Read first message

        amsg = tb.msgq0.delete_head() # get first amplitude message

        raw_a = amsg.to_string() # raw amplitude data

        a_data = numpy.fromstring(raw_a, numpy.float32, count = int(amsg.arg2())) # converted amplitude data

        print "Data in sink is: ",a_data
  
        tb.stop()

      

if __name__ == '__main__':

    main ()


Regards,


Attachment: msg_pd.py
Description: Text Data


reply via email to

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