[Top][All Lists]
[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 21:34:33 +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,
msg_pd.py
Description: Text Data