Here I will show how to get data dumped simultaneously into two different files :
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_1 = uhd.usrp_source(device_addr="serial=1R270DU1",\
stream_args=uhd.stream_args('fc32'))
self.uhd_usrp_source_2 = uhd.usrp_source(device_addr="serial=1R270DU2",\
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
# Here you have to essentially put the serial number of the two devices
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_1.set_subdev_spec("A:0", 0)
self.uhd_usrp_source_2.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
# You can set different subdevices for each of them
Step-10 Specify antenna by inserting following line
self.uhd_usrp_source_1.set_antenna("RX2", 0)
self.uhd_usrp_source_2.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
# You can set different receiving antenna for each of them
Step-11 Set the sampling rate by inserting following line
self.uhd_usrp_source_1.set_samp_rate(1000000)
self.uhd_usrp_source_2.set_samp_rate(1000000)
#This sets the sampling rate to 1000000 i.e. 1MSPS
# You can set different sampling rates for each of them
Step-12 Set the gain by inserting following lines
self.uhd_usrp_source_1.set_gain(45)
self.uhd_usrp_source_2.set_gain(45)
#This sets the gain to 45dB
# You can set different gains to each of them
Step-13 Set the center frequency by inserting following lines
treq = uhd.tune_request(2450000000)
self.uhd_usrp_source_1.set_center_freq(treq)
self.uhd_usrp_source_2.set_center_freq(treq)
#This sets the center frequency to 2450000000 i.e. 2.45GHz
# You can set different center frequency for each of them, in such case youneed to make two different "treq" parameters with different frequencies
i.e. treq1 = uhd.tune_request(frequency_1)
treq2 = uhd.tune_request(frequency_2)
And then use these treq1 and treq2 to set the center frequencies
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
# You can set different sample number for each of them
Step-15 Connect everything by inserting following lines
self.connect(self.uhd_usrp_source_1,self.head_1,self.gr_file_sink_1)
self.connect(self.uhd_usrp_source_2,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/DpZVT12A/pgm_3.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_1 = uhd.usrp_source(device_addr="serial=1R270DU1",\
stream_args=uhd.stream_args('fc32'))
self.uhd_usrp_source_2 = uhd.usrp_source(device_addr="serial=1R270DU2",\
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
# Here you have to essentially put the serial number of the two devices
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_1.set_subdev_spec("A:0", 0)
self.uhd_usrp_source_2.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
# You can set different subdevices for each of them
Step-10 Specify antenna by inserting following line
self.uhd_usrp_source_1.set_antenna("RX2", 0)
self.uhd_usrp_source_2.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
# You can set different receiving antenna for each of them
Step-11 Set the sampling rate by inserting following line
self.uhd_usrp_source_1.set_samp_rate(1000000)
self.uhd_usrp_source_2.set_samp_rate(1000000)
#This sets the sampling rate to 1000000 i.e. 1MSPS
# You can set different sampling rates for each of them
Step-12 Set the gain by inserting following lines
self.uhd_usrp_source_1.set_gain(45)
self.uhd_usrp_source_2.set_gain(45)
#This sets the gain to 45dB
# You can set different gains to each of them
Step-13 Set the center frequency by inserting following lines
treq = uhd.tune_request(2450000000)
self.uhd_usrp_source_1.set_center_freq(treq)
self.uhd_usrp_source_2.set_center_freq(treq)
#This sets the center frequency to 2450000000 i.e. 2.45GHz
# You can set different center frequency for each of them, in such case youneed to make two different "treq" parameters with different frequencies
i.e. treq1 = uhd.tune_request(frequency_1)
treq2 = uhd.tune_request(frequency_2)
And then use these treq1 and treq2 to set the center frequencies
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
# You can set different sample number for each of them
Step-15 Connect everything by inserting following lines
self.connect(self.uhd_usrp_source_1,self.head_1,self.gr_file_sink_1)
self.connect(self.uhd_usrp_source_2,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/DpZVT12A/pgm_3.html
No comments:
Post a Comment