Hi all, I have a question on my python file. The original source code is here: https://www.cgran.org/browser/projects/ftw_80211_ofdm_tx/trunk/src/examples I modified the ftw_ofdm_tx.py a little. I want to do like this: I have a series: 1,-1,1,-1,-1,-1..... I read the series one by one by a certain time, e.g., I read "1" at the time point 0, "-1" at the time point 5, the next "1" at the point 10..... if I read "1", I send the msg to a certain frequency (e.g., 802.11g, 2.427G) for a specific time (1 second). Otherwise I do nothing. I use a while loop to control the time interval. I run: python /home/w500/Desktop/ftw_80211_ofdm_tx/trunk/src/examples/ftw_ofdm_tx_back.py -f 2.427G -n 3 -g 30 But it doesn't work like what I want. So, could you please help me to figure it out? I will be appreciated very much. Thank you! John
Below is the modified file:(ftw_ofdm_tx.py), I use bold font to label the modified part.
#!/usr/bin/env python # # Copyright 2005, 2006 Free Software Foundation, Inc. # # This file is part of GNU Radio # # GNU Radio is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # GNU Radio is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Radio; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 51 Franklin Street, # Boston, MA 02110-1301, USA.
# Projectname: ftw_80211_ofdm_tx # # Filename: ftw_ofdm_tx.py # # This is the main script that triggers the encoding procedures and # sends the complex baseband signal to the USRP2 sink. # # List of Contributors: Andrea Costantini, # Paul Fuxjaeger, (address@hidden) # Danilo Valerio, (address@hidden) # Paolo Castiglione, (address@hidden) # Giammarco Zacheo, (address@hidden)
# Forschungszentrum Telekommunikation Wien # Telecommunications Research Center Vienna # (http://www.ftw.at) # December 2009
import time, struct, sys, sched from gnuradio import gr, blks2, usrp2, eng_notation from gnuradio.eng_option import eng_option from optparse import OptionParser from ftw_ofdm import ftw_transmit_path
class my_top_block(gr.top_block): def __init__(self, options, payload=''): gr.top_block.__init__(self)
self._interface = options.interface # logical network interface self._mac_addr = options.mac_addr # MAC address self._tx_freq = options.freq # center frequency self._interp = options.interp # interpolation factor self._gain = options.gain # Tx gain
# setup sink and connect output of transmitpath to it self._setup_usrp_sink() self.txpath = ftw_transmit_path(options, payload) self.connect(self.txpath, self.u)
# write final baseband signal to disk if options.log: self.connect(self.txpath, gr.file_sink(gr.sizeof_gr_complex, "final.dat"))
def _setup_usrp_sink(self): """ Creates a USRP sink, determines the settings for best bitrate, and attaches to the transmitter's subdevice. """ self.u = usrp2.sink_32fc(self._interface, self._mac_addr) self.u.set_interp(self._interp) self.u.set_gain(self._gain) self.set_freq(self._tx_freq)
def set_freq(self, target_freq): """ Set the center frequency we're interested in.
@param target_freq: frequency in Hz @rtype: bool
Tuning is a two step process. First we ask the front-end to tune as close to the desired frequency as it can. Then we use the result of that operation and our target_frequency to determine the value for the digital up converter. """ tr = self.u.set_center_freq(target_freq) if tr == None: sys.stderr.write('Failed to set center frequency\n') raise SystemExit, 1
# ///////////////////////////////////////////////////////////////////////////// # main # /////////////////////////////////////////////////////////////////////////////
parser.add_option("-n", "--norm", type="eng_float", default=0.3 , help="set gain factor for complex baseband floats [default=%default]")
parser.add_option("-s","--swapIQ", action="", default=False, help="swap IQ components before sending to USRP2 sink [default=%default]")
parser.add_option("-r", "--repetition", type="int", default=1 , help="set number of frame-copies to send, 0=infinite [default=%default] ")
parser.add_option("-l", "--log", action="", default=False, help="write debug-output of individual blocks to disk")
parser.add_option("-p", "--payload", type="string", default="HelloWorld", help="payload ASCII-string to send, [default=%default]")
(options, args) = parser.parse_args ()
# This is the ASCII encoded message that will be put into the MSDU (you have to build IP headers on your own if you need them!) # Use monitor (promiscuous) mode on the receiver side to see this kind of non-IP frame. #my_msg = options.payload my_msg = 'A';
# build the graph tb = my_top_block(options, my_msg)
r = gr.enable_realtime_scheduling() if r != gr.RT_OK: print "Warning: failed to enable realtime scheduling"