discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Read and Write a PMT input/output GNURadio C++


From: Marcus Müller
Subject: Re: [Discuss-gnuradio] Read and Write a PMT input/output GNURadio C++
Date: Tue, 27 Jun 2017 10:48:37 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0

You're explicitly sending a pair (pmt::cons), not a real or integer number!


On 27.06.2017 04:57, Cristian Rodríguez wrote:
Hi.

Thanks a lot for your time to read.

I read the two links that you shared to me, Marcus. Thanks a lot for your help. But i still have a problem.

I've implemented as follows:
  • I create, the output, input and the handler:

    message_port_register_out(pmt::mp("out_threshold"));

    message_port_register_in(pmt::mp("in_threshold"));
    set_msg_handler(pmt::mp("in_threshold"), boost::bind(&sync_short_impl::set_msg, this, _1));

  • I create, the next function to handle the inputs

void set_msg(pmt::pmt_t msg) { d_msg= msg;
        dout << "Nueva lectura : " << d_msg << " ninput: " << std::endl;
if (pmt::is_integer(d_msg)) {
    d_threshold = (double) pmt::to_long(d_msg);
} else if (pmt::is_real(d_msg)) {
    d_threshold = pmt::to_double(d_msg);
} else {
 // We really expected an integer or a double here, so we don't know what to do
    throw std::runtime_error("expected an integer!");
}

 }

  • In the block i linked the input and the output, just to check that the function set_msg(), works.


Imágenes integradas 3

  • I compile the c++ codes, etc... all that is necessary.
  • I write the output as follows (that's working, i checked that with a message debug):

message_port_pub(pmt::mp("out_threshold"), pmt::cons(pmt::PMT_NIL, pmt::from_double(d_threshold)));

  • When i start the flowgraph, the block put in the output a PMT message, after that, as it is linked with the input, the message go to the input port. When it is recevied, the function set_msg is launched, but the type of the number in the PMT is not recognized as double. Here is my problem, I don't understand why it is happening, because the PMT that I put in the output is build from a double, then it is supposed, the one that i received is too a double. What do you think?

Imágenes integradas 2


Thanks in advance.


Best regards,


Cristian

2017-06-26 12:45 GMT-05:00 Marcus Müller <address@hidden>:

Hi Cristian,

you need to subscribe a handler to the message port. See:

https://wiki.gnuradio.org/index.php/Guided_Tutorial_Programming_Topics#5.3.2_Adding_Message_Passing_to_the_Code

It's absolutely up to you what kind of PMT you're publishing over a message port, but it's canonical to have a PMT dict that maps

pmt::mp("propertyname") -> pmt::whateversuitsyourproperty.

As an example, see what the gr-uhd blocks accept [1]

Best regards,

Marcus

[1] https://gnuradio.org/doc/doxygen/page_uhd.html#uhd_command_syntax

On 06/26/2017 07:35 PM, Cristian Rodríguez wrote:
Hi all,

I'm not sure about how to read and write PMT ports from and to local variables. I'm going to expose what i'm doing, and if someone can help me i would be very greatful.

I've created an input and an output of PMT type.

message_port_register_in(pmt::pmt_t in_threshold)
message_port_register_out(pmt::pmt_t out_threshold)

Now i want to read the port, and save the data in a local variable, do operations with that variable, and later write it in the output,

I create the variables,

double d_threshold;
pmt::pmt_t target;

I read it, I don't know how to do it. But I suppose:

message_port_sub(pmt::pmt_t in_threshold,pmt::pmt_t target);
d_threshold= pmt::to_double(target);

And, I think i can write it as follows:

msg=pmt::from_double(d_threshold);
message_port_pub(pmt::pmt_t out_threshold,pmt::pmt_t msg);

What do you think, i've seen several examples, and they do this, message_port_pub(pmt::mp("symbols"), pmt::cons(pmt::make_dict(), pmt::init_c32vector(48, symbols)));
      
But I don't understand why it is necessary to use pmt::make_dict().

Thanks in advance.

Best regards,

Cristian



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


_______________________________________________
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]