Forum: GNU Radio writing packet payloads to file

Posted by Colleen Josephson (Guest)
on 2012-11-17 00:29
(Received via mailing list)
Hello all,

I am researching a new coding algorithm. I am transmitting and coding a
text file using payload_tx.py and then write the binary of the packet
payload to a file to do offline analysis.

I am having trouble writing packet payloads to file, however, because 
the I
can't seem to find a way to get data out of a gr_message except for the
to_string() method. If I try and convert the string back to binary (my
attempt involved python's binascii module), I get an "Error: illegal 
char"
message.

This makes sense, since the data is still coded, and should not be a 
valid
ascii string. But how can I get around this problem and write binary to
file?
Posted by Tom Rondeau (Guest)
on 2012-11-20 19:09
(Received via mailing list)
On Fri, Nov 16, 2012 at 6:28 PM, Colleen Josephson <cjoseph@mit.edu> 
wrote:
> message.
> Class of 2013
Colleen,

Have you tried to use struck.unpack?

Tom
Posted by Colleen Josephson (Guest)
on 2012-11-21 20:22
(Received via mailing list)
Thanks for the response. I'm not sure I understand how struct.unpack 
will
help, since the only data I can get seems to already be a python string. 
If
I transmit a packet with "hello world" as my payload, the only thing I 
ever
see in the receive script is the python string "hello world". I don't 
know
how to access the intermediate binary representation.
Posted by Tom Rondeau (Guest)
on 2012-11-24 16:31
(Received via mailing list)
On Wed, Nov 21, 2012 at 2:21 PM, Colleen Josephson <cjoseph@mit.edu> 
wrote:
> Thanks for the response. I'm not sure I understand how struct.unpack will
> help, since the only data I can get seems to already be a python string. If
> I transmit a packet with "hello world" as my payload, the only thing I ever
> see in the receive script is the python string "hello world". I don't know
> how to access the intermediate binary representation.

Colleen,

Take a look at how we handle this stuff in gr-digital. Specifically,
in gr-digital/python/pkt.py, the method run() of _queue_watcher_thread
extracts the message contents as a string and passes it to
packet_utils.unmake_packet (in packet_utils.py). We have a bunch of
helper functions in there to handle the string data (such as
string_to_hex_list and the like). Finally, the paylad (As a string) is
passed up to the example scripts like
gr-digital/examples/narrowband/benchmark_rx.py where the rx_callback
metho uses struct.unpack to extract the packet number, which is
non-ASCII.

Hopefully, following the way we handle the messages as strings and the
various methods we use to manipulate them here will help you with your
tasks.

Tom
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.