discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Message Passing


From: Martin Braun
Subject: Re: [Discuss-gnuradio] Message Passing
Date: Wed, 14 May 2014 10:26:11 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0

On 14.05.2014 08:11, Activecat wrote:
Dear gurus,

I am learning gnuradio Message Passing feature, but couldn't get
desirable result.
The Message seems published successfully, but not subscribed by the
Message receiver.
How to correct the error ..?

Just to make sure: You did connect the ports in your flow graph?

That said, I've seen something like this recently. Maybe there's a bug... needs investigating.

M

The message sender block:

     // constructor
         message_source1_impl::message_source1_impl()
           : gr::sync_block("message_source1",
                   gr::io_signature::make(0, 0, 0),
                   gr::io_signature::make( 1, 1, sizeof(int)) )
         {
             message_port_register_out( pmt::mp("print") );
         }

         // send_message1
         void
         message_source1_impl::send_message1()
         {
             std::cout << "message_source1_impl::send_message():
invoked" << std::endl;
             pmt::pmt_t str0 = pmt::string_to_symbol(
std::string("Welcome 2014"));
             message_port_pub( pmt::mp("print"), str0 );
         }

         // work
         int
         message_source1_impl::work(int noutput_items,
                   gr_vector_const_void_star &input_items,
                   gr_vector_void_star &output_items)
         {
             int *out = (int *) output_items[0];
             for (int i=0; i < noutput_items; i++)
                 out[i] = (i+1) * (i+1);

             send_message1();
             return noutput_items;
         }



The message receiver block:

     // constructor
         message_sink1_impl::message_sink1_impl()
           : gr::sync_block("message_sink1",
                   gr::io_signature::make(0, 0, 0),
                   gr::io_signature::make( 1, 1, sizeof(int)) )
         {
             message_port_register_in( pmt::mp("print") );
             set_msg_handler( pmt::mp("print"), boost::bind(
&message_sink1_impl::handler1, this, _1 ) );
         }

         // message handler
         void
         message_sink1_impl::handler1( pmt::pmt_t myMessage )
         {
             std::cout << "message_sink1_impl::handler1():  invoked" <<
std::endl;
             pmt::print( myMessage );
         }

         // work
         int
         message_sink1_impl::work(int noutput_items,
                   gr_vector_const_void_star &input_items,
                   gr_vector_void_star &output_items)
         {
             int *out = (int *) output_items[0];
             for (int i=0; i < noutput_items; i++)
                 out[i] = i+1;

             return noutput_items;
         }



Flow graph execution output:
     Executing: "/home/mmkk/gnuradio/gr-activecat/apps/top_block.py"
     message_source1_impl::send_message():  invoked
     message_source1_impl::send_message():  invoked
     message_source1_impl::send_message():  invoked
     message_source1_impl::send_message():  invoked
     message_source1_impl::send_message():  invoked


_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio





reply via email to

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