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
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio



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

Reply via email to