Writing packet payloads to file

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?

On Fri, Nov 16, 2012 at 6:28 PM, Colleen J. [email protected]
wrote:

message.
Class of 2013
Colleen,

Have you tried to use struck.unpack?

Tom

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.

On Wed, Nov 21, 2012 at 2:21 PM, Colleen J. [email protected]
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