discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Continuos data transmission using messages ...


From: Eric Blossom
Subject: Re: [Discuss-gnuradio] Continuos data transmission using messages ...
Date: Tue, 26 Feb 2008 08:24:02 -0800
User-agent: Mutt/1.5.17 (2007-11-01)

On Tue, Feb 26, 2008 at 10:12:44AM -0500, Kshitij Kumar Singh wrote:
> I am having a little problem working with messages. I want to transmit
> an entire binary file using messages over and over again. Eg., msg1
> transmits file x, msg2 again transmits file x
> and so forth. My problem is that I'm unable to find a way to loop over
> the file again and again. I tried using tx_voice.py as a reference but
> was unable to find something suitable.
> Setting repeat to true in gr.file_source won't help either. My goal is
> to send this file using packets(which is why I started out with a
> shorter script using messages) , so repeating or throttling ends up
> making them strings longer than 4096.
> Any help would be much appreciated. Thanks in advance.
> 
> Regards,
> Kshitij

I think you are misunderstanding how gr.message_sink works.  Since
it's possible to set the item size small (e.g., gr.sizeof_float), it
returns as many samples as it can in a message.  It does however
provide you information about what it did in the arg1 and arg2 field.

  // build a message to hold whatever we've got
  gr_message_sptr msg = gr_make_message(0,              // msg type
                                        d_itemsize,     // arg1 for other end
                                        noutput_items,  // arg2 for other end 
(redundant)
                                        noutput_items * d_itemsize);   // len 
of msg


> -----------------------------------------------------------------------------------------------------------------------------
> from gnuradio import gr
> from struct import unpack
> 
> queue = gr.msg_queue(10)
> source = gr.file_source(gr.sizeof_char,'/home/kshitij/work/tp.dat',
> False)
> c2f = gr.char_to_float()
> sink = gr.message_sink(gr.sizeof_float,queue,False)
> tb = gr.top_block()
> tb.connect(source,c2f,sink)
> try:
>     tb.start()
>     msg = queue.delete_head()
>     payload = msg.to_string()
>     data = unpack('512f', payload)
>     print data, len(payload)
>     print msg.type(), msg.arg1(), msg.arg2(), msg.length()
>     
> except KeyboardInterrupt:
>     pass
> ---------------------------------------------------------------------------------------------------------------------------------
> 

Eric




reply via email to

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