Reading ZMQ messages in Python


I have a flowgraph that send ZMQ PUB messages generated by a custom
OOT block. The messages transmitted by GNURadio ZMQ PUB block are
received by a Python application, using a standard ZMQ Library.

[custom_oot_block] —(GNURadio message)—> [ZMQ Publisher]
…(ethernet)…> [Python ZMQ SUB Library]

This is the part of the code of the OOT block that creates the message:

float *outPdPfa = (float *) output_items[0];

pmt::pmt_t msg = pmt::init_f32vector(1, outPdPfa);
message_port_pub(pmt::mp(“hard_decision”), msg);

In Python, I receive the transmitted message and this is some of the
strings that are received:

‘\n\x08\x00\x00\x00\x01\x01\x00?\xe5R\xb5 \x00\x00\x00’

How do I convert these strings to a floating number value?

Thank you.


try struct.unpack()


the “right way” to do this is use PMT’s python bindings:

import pmt
p = pmt.deserialize_str(s)
python_numpy_array = pmt.pmt_to_python.pmt_to_python§

Best regards,

Hi Marcus,

I was missing the “deserialize” call. I’ll try it tomorrow.

Thank you.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs