Am 23.02.2013 17:09, schrieb Hanz:
Thank you much for your answer. Indeed, its a shared pointer. I now figured
out, the the only way to get the data is via .to_string().


So my thought was, that all the messages then should contain one byte (with
one bit information). At the end, my code looks like that:

tb = top_block()
        tb.start()

        while 1:

                        point=tb.sink_queue.delete_head()
                        point=point.to_string()
                        print len(point)

The first curiosity is, that the length variates from 2 up to 2048. Can
somebody explain why? The next question is, how to i convert the "bitvalue"
of the string to an actual char?


Hi,

your code setup with the blocks and connects looks fine to me.

Although I have not checked the details of msg_sink I would expect it to process blocks of incomming bytes into messages. So a message can contain an abritrary amount of bytes in it (I think that is why your length varies). Once again speaking for the C++ interface with the method length() you will get the number of elements that this message contains. Then you can usually access the message's data through a call to the msg() function which returns a pointer to a byte array containing the bytes. This will be wrapped to some python code, so check the return type of msg() and try to process this returned data instead of to_string() if you are interested in the data itself. So I think your code should look something like this (not tested, please check agains the actual Python interface documented with Sphinx or Python docstrings):

message=tb.sink_queue.delete_head()
data=message.msg()
length=message.length()

for i in xrange(length) :
        byte=data[i]

Hope this gives you an idea on how to use the interface.

Martin

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

Reply via email to