Here I will show how to get data dumped simultaneously into two different files from a single usrp :
Step -1 Make a file named "foo.py" with your favourite text editor
Step-2 Insert following two lines in the beginning.
#!/usr/bin/python2.6
#!/usr/bin/env python
Please change the version number of python as per your system
These two lines are necessary to make this foo.py file executable.
Step-3 Import necessary ingredients by insert the following lines
from gnuradio import gr
from gnuradio import uhd
We are importing gr to get our canvas i.e. top_block.py and importing uhd to access the usrp
Step-4 Making a class by insert the following lines
class rx_cfile_block1(gr.top_block):
This makes a class named "rx_cfile_block1" which is a derived class of gr.top_block (don't worry about this .. just do it)
Step-5 Defining a function of the class by inserting the follwing line
def __init__(self):
Every python class has a member function named __init__ which is passed a parameter "self" (don't worry about this .. just do it)
Step-6 Constructor for the derived class by inserting the following line
gr.top_block.__init__(self)
(don't worry about this .. just do it)
Step-7 Instantiating a uhd source by inserting following line
self.uhd_usrp_source = uhd.usrp_source(device_addr="serial=1R270DU1",\
stream_args=uhd.stream_args('fc32'))
# If you want to record complex data then leave the line above as it is. If you want to record short data, put sc16 instead of fc32
# Either replace the serial number by your usrp's serial number or just put type=usrp1 or type=usrp2 (according to availability) inside the quotes
Step-8 Instantiating two file sinks by inserting following line
self.gr_file_sink_1 = gr.file_sink(gr.sizeof_gr_complex,"/home/username/first_app_data1")
self.gr_file_sink_2 = gr.file_sink(gr.sizeof_gr_complex,"/home/username/first_app_data2")
** Replace username with your username
# If you want to record complex data then leave the line above as it is. If you want to record short data, gr.sizeof_short*2 instead of gr.sizeof_gr_complex.
# For collecting short type data perform the above step after modification mentioned in step-7
Step-9 Specify the subdevice by inserting following line
self.uhd_usrp_source.set_subdev_spec("A:0", 0)
# For details on subdevices and antenna see my tutorial on subdevices here
http://www.youtube.com/watch?v=BERxSmWlRZM&feature=BFa&list=PLE8D7641BBF6E849B
Step-10 Specify antenna by inserting following line
self.uhd_usrp_source.set_antenna("RX2", 0)
# For details on subdevices and antenna see my tutorial on subdevices here
http://www.youtube.com/watch?v=BERxSmWlRZM&feature=BFa&list=PLE8D7641BBF6E849B
Step-11 Set the sampling rate by inserting following line
self.uhd_usrp_source.set_samp_rate(1000000)
#This sets the sampling rate to 1000000 i.e. 1MSPS
Step-12 Set the gain by inserting following lines
self.uhd_usrp_source.set_gain(45)
#This sets the gain to 45dB
Step-13 Set the center frequency by inserting following lines
treq = uhd.tune_request(2450000000)
self.uhd_usrp_source.set_center_freq(treq)
#This sets the center frequency to 2450000000 i.e. 2.45GHz
Step-14 Set the number of samples to be collected by inserting following line
self.head_1 = gr.head(gr.sizeof_gr_complex, int(1000000))
self.head_2 = gr.head(gr.sizeof_gr_complex, int(1000000))
#This sets the number of samples to be recorded equals 1000000
Step-15 Connect everything by inserting following lines
self.connect(self.uhd_usrp_source,self.head_1,self.gr_file_sink_1)
self.connect(self.uhd_usrp_source,self.head_2,self.gr_file_sink_2)
# It connects the uhd source, the head and the sink
Step-16 Finishing touch by inserting following lines of code
if __name__ == '__main__':
tb = rx_cfile_block1()
tb.run()
Now go to the terminal and type chmod +x foo.py
Now the python you just created has become executable so run it by typing
./foo.py at the terminal
Now check the destination directory for the collected data.
Now you can plot the data by typing
gr_plot_psd_c /home/username/first_app_data1 # for PSD
gr_plot_psd_c /home/username/first_app_data2 # for PSD
gr_plot_fft_c /home/username/first_app_data1 # for FFT
gr_plot_fft_c /home/username/first_app_data2 # for FFT
program :
http://www.2shared.com/file/Lrj95l69/pgm_2.html
Step -1 Make a file named "foo.py" with your favourite text editor
Step-2 Insert following two lines in the beginning.
#!/usr/bin/python2.6
#!/usr/bin/env python
Please change the version number of python as per your system
These two lines are necessary to make this foo.py file executable.
Step-3 Import necessary ingredients by insert the following lines
from gnuradio import gr
from gnuradio import uhd
We are importing gr to get our canvas i.e. top_block.py and importing uhd to access the usrp
Step-4 Making a class by insert the following lines
class rx_cfile_block1(gr.top_block):
This makes a class named "rx_cfile_block1" which is a derived class of gr.top_block (don't worry about this .. just do it)
Step-5 Defining a function of the class by inserting the follwing line
def __init__(self):
Every python class has a member function named __init__ which is passed a parameter "self" (don't worry about this .. just do it)
Step-6 Constructor for the derived class by inserting the following line
gr.top_block.__init__(self)
(don't worry about this .. just do it)
Step-7 Instantiating a uhd source by inserting following line
self.uhd_usrp_source = uhd.usrp_source(device_addr="serial=1R270DU1",\
stream_args=uhd.stream_args('fc32'))
# If you want to record complex data then leave the line above as it is. If you want to record short data, put sc16 instead of fc32
# Either replace the serial number by your usrp's serial number or just put type=usrp1 or type=usrp2 (according to availability) inside the quotes
Step-8 Instantiating two file sinks by inserting following line
self.gr_file_sink_1 = gr.file_sink(gr.sizeof_gr_complex,"/home/username/first_app_data1")
self.gr_file_sink_2 = gr.file_sink(gr.sizeof_gr_complex,"/home/username/first_app_data2")
** Replace username with your username
# If you want to record complex data then leave the line above as it is. If you want to record short data, gr.sizeof_short*2 instead of gr.sizeof_gr_complex.
# For collecting short type data perform the above step after modification mentioned in step-7
Step-9 Specify the subdevice by inserting following line
self.uhd_usrp_source.set_subdev_spec("A:0", 0)
# For details on subdevices and antenna see my tutorial on subdevices here
http://www.youtube.com/watch?v=BERxSmWlRZM&feature=BFa&list=PLE8D7641BBF6E849B
Step-10 Specify antenna by inserting following line
self.uhd_usrp_source.set_antenna("RX2", 0)
# For details on subdevices and antenna see my tutorial on subdevices here
http://www.youtube.com/watch?v=BERxSmWlRZM&feature=BFa&list=PLE8D7641BBF6E849B
Step-11 Set the sampling rate by inserting following line
self.uhd_usrp_source.set_samp_rate(1000000)
#This sets the sampling rate to 1000000 i.e. 1MSPS
Step-12 Set the gain by inserting following lines
self.uhd_usrp_source.set_gain(45)
#This sets the gain to 45dB
Step-13 Set the center frequency by inserting following lines
treq = uhd.tune_request(2450000000)
self.uhd_usrp_source.set_center_freq(treq)
#This sets the center frequency to 2450000000 i.e. 2.45GHz
Step-14 Set the number of samples to be collected by inserting following line
self.head_1 = gr.head(gr.sizeof_gr_complex, int(1000000))
self.head_2 = gr.head(gr.sizeof_gr_complex, int(1000000))
#This sets the number of samples to be recorded equals 1000000
Step-15 Connect everything by inserting following lines
self.connect(self.uhd_usrp_source,self.head_1,self.gr_file_sink_1)
self.connect(self.uhd_usrp_source,self.head_2,self.gr_file_sink_2)
# It connects the uhd source, the head and the sink
Step-16 Finishing touch by inserting following lines of code
if __name__ == '__main__':
tb = rx_cfile_block1()
tb.run()
Now go to the terminal and type chmod +x foo.py
Now the python you just created has become executable so run it by typing
./foo.py at the terminal
Now check the destination directory for the collected data.
Now you can plot the data by typing
gr_plot_psd_c /home/username/first_app_data1 # for PSD
gr_plot_psd_c /home/username/first_app_data2 # for PSD
gr_plot_fft_c /home/username/first_app_data1 # for FFT
gr_plot_fft_c /home/username/first_app_data2 # for FFT
program :
http://www.2shared.com/file/Lrj95l69/pgm_2.html
i am a beginner, after following all this instructions, these are the result at the terminal. Even same when i put my username. Why the error?
ReplyDeleteitamakide@itamakide-Inspiron-M5040:~$ gr_plot_psd_c /home/username/first_app_data1 # for PSD
Traceback (most recent call last):
File "/usr/bin/gr_plot_psd_c", line 42, in
main()
File "/usr/bin/gr_plot_psd_c", line 38, in main
dc = plot_psd_base("complex64", filename, options)
File "/usr/lib/python2.7/dist-packages/gnuradio/plot_psd_base.py", line 42, in __init__
self.hfile = open(filename, "r")
IOError: [Errno 2] No such file or directory: '/home/username/first_app_data1'
itamakide@itamakide-Inspiron-M5040:~$ gr_plot_psd_c /home/username/first_app_data2 # for PSD
Traceback (most recent call last):
File "/usr/bin/gr_plot_psd_c", line 42, in
main()
File "/usr/bin/gr_plot_psd_c", line 38, in main
dc = plot_psd_base("complex64", filename, options)
File "/usr/lib/python2.7/dist-packages/gnuradio/plot_psd_base.py", line 42, in __init__
self.hfile = open(filename, "r")
IOError: [Errno 2] No such file or directory: '/home/username/first_app_data2'
itamakide@itamakide-Inspiron-M5040:~$ gr_plot_fft_c /home/username/first_app_data1 # for FFT
Traceback (most recent call last):
File "/usr/bin/gr_plot_fft_c", line 41, in
main()
File "/usr/bin/gr_plot_fft_c", line 37, in main
dc = plot_fft_base("complex64", filename, options)
File "/usr/lib/python2.7/dist-packages/gnuradio/plot_fft_base.py", line 40, in __init__
self.hfile = open(filename, "r")
IOError: [Errno 2] No such file or directory: '/home/username/first_app_data1'
itamakide@itamakide-Inspiron-M5040:~$ gr_plot_fft_c /home/username/first_app_data2 # for FFT
Traceback (most recent call last):
File "/usr/bin/gr_plot_fft_c", line 41, in
main()
File "/usr/bin/gr_plot_fft_c", line 37, in main
dc = plot_fft_base("complex64", filename, options)
File "/usr/lib/python2.7/dist-packages/gnuradio/plot_fft_base.py", line 40, in __init__
self.hfile = open(filename, "r")
IOError: [Errno 2] No such file or directory: '/home/username/first_app_data2'