Changeset 7655
- Timestamp:
- 02/13/08 11:39:51
- Files:
-
- gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_char.py (modified) (3 diffs)
- gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_const.py (modified) (4 diffs)
- gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_data.py (copied) (copied from gnuradio/trunk/gnuradio-core/src/utils/gr_plot_data.py)
- gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_fft_c.py (modified) (4 diffs)
- gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_fft_f.py (modified) (4 diffs)
- gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_float.py (modified) (3 diffs)
- gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_int.py (modified) (3 diffs)
- gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_iq.py (modified) (4 diffs)
- gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_short.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_char.py
r7654 r7655 1 1 #!/usr/bin/env python 2 2 # 3 # Copyright 2007 Free Software Foundation, Inc.3 # Copyright 2007,2008 Free Software Foundation, Inc. 4 4 # 5 5 # This file is part of GNU Radio … … 22 22 23 23 import scipy 24 from pylab import *25 24 from optparse import OptionParser 26 27 matplotlib.interactive(True) 28 matplotlib.use('TkAgg') 29 30 class draw_fft_c: 31 def __init__(self, filename, options): 32 self.hfile = open(filename, "r") 33 self.block_length = options.block 34 self.start = options.start 35 self.sample_rate = options.sample_rate 36 37 self.axis_font_size = 16 38 self.label_font_size = 18 39 self.title_font_size = 20 40 self.text_size = 22 41 42 # Setup PLOT 43 self.fig = figure(1, figsize=(16, 9), facecolor='w') 44 rcParams['xtick.labelsize'] = self.axis_font_size 45 rcParams['ytick.labelsize'] = self.axis_font_size 46 47 self.text_file = figtext(0.10, 0.94, ("File: %s" % filename), weight="heavy", size=self.text_size) 48 self.text_file_pos = figtext(0.10, 0.88, "File Position: ", weight="heavy", size=self.text_size) 49 self.text_block = figtext(0.40, 0.88, ("Block Size: %d" % self.block_length), 50 weight="heavy", size=self.text_size) 51 self.text_sr = figtext(0.60, 0.88, ("Sample Rate: %.2f" % self.sample_rate), 52 weight="heavy", size=self.text_size) 53 self.make_plots() 54 55 self.button_left_axes = self.fig.add_axes([0.45, 0.01, 0.05, 0.05], frameon=True) 56 self.button_left = Button(self.button_left_axes, "<") 57 self.button_left_callback = self.button_left.on_clicked(self.button_left_click) 58 59 self.button_right_axes = self.fig.add_axes([0.50, 0.01, 0.05, 0.05], frameon=True) 60 self.button_right = Button(self.button_right_axes, ">") 61 self.button_right_callback = self.button_right.on_clicked(self.button_right_click) 62 63 self.xlim = self.sp_f.get_xlim() 64 65 self.manager = get_current_fig_manager() 66 connect('key_press_event', self.click) 67 show() 68 69 def get_data(self): 70 self.text_file_pos.set_text("File Position: %d" % (self.hfile.tell())) 71 f = scipy.fromfile(self.hfile, dtype=scipy.int8, count=self.block_length) 72 #print "Read in %d items" % len(self.f) 73 if(len(f) == 0): 74 print "End of File" 75 else: 76 self.f = f 77 self.time = [i*(1/self.sample_rate) for i in range(len(self.f))] 78 79 def make_plots(self): 80 # if specified on the command-line, set file pointer 81 self.hfile.seek(8*self.start, 1) 82 83 self.get_data() 84 85 # Subplot for real and imaginary parts of signal 86 self.sp_f = self.fig.add_subplot(2,1,1, position=[0.075, 0.2, 0.875, 0.6]) 87 self.sp_f.set_title(("Amplitude"), fontsize=self.title_font_size, fontweight="bold") 88 self.sp_f.set_xlabel("Time (s)", fontsize=self.label_font_size, fontweight="bold") 89 self.sp_f.set_ylabel("Amplitude (V)", fontsize=self.label_font_size, fontweight="bold") 90 self.plot_f = plot(self.time, self.f, 'bo-') 91 self.sp_f.set_ylim([1.5*min(self.f), 92 1.5*max(self.f)]) 93 94 draw() 95 96 def update_plots(self): 97 self.plot_f[0].set_data([self.time, self.f]) 98 self.sp_f.set_ylim([1.5*min(self.f), 99 1.5*max(self.f)]) 100 draw() 101 102 def click(self, event): 103 forward_valid_keys = [" ", "down", "right"] 104 backward_valid_keys = ["up", "left"] 105 106 if(find(event.key, forward_valid_keys)): 107 self.step_forward() 108 109 elif(find(event.key, backward_valid_keys)): 110 self.step_backward() 111 112 def button_left_click(self, event): 113 self.step_backward() 114 115 def button_right_click(self, event): 116 self.step_forward() 117 118 def step_forward(self): 119 self.get_data() 120 self.update_plots() 121 122 def step_backward(self): 123 # Step back in file position 124 if(self.hfile.tell() >= 2*self.block_length ): 125 self.hfile.seek(-2*self.block_length, 1) 126 else: 127 self.hfile.seek(-self.hfile.tell(),1) 128 self.get_data() 129 self.update_plots() 130 131 132 133 #FIXME: there must be a way to do this with a Python builtin 134 def find(item_in, list_search): 135 for l in list_search: 136 if item_in == l: 137 return True 138 return False 25 from gr_plot_data import plot_data 139 26 140 27 def main(): 141 usage="%prog: [options] input_filename "142 description = "Takes a GNU Radio floating pointbinary file and displays the samples versus time. You can set the block size to specify how many points to read in at a time and the start position in the file. By default, the system assumes a sample rate of 1, so in time, each sample is plotted versus the sample number. To set a true time axis, set the sample rate (-R or --sample-rate) to the sample rate used when capturing the samples."28 usage="%prog: [options] input_filenames" 29 description = "Takes a GNU Radio byte/char binary file and displays the samples versus time. You can set the block size to specify how many points to read in at a time and the start position in the file. By default, the system assumes a sample rate of 1, so in time, each sample is plotted versus the sample number. To set a true time axis, set the sample rate (-R or --sample-rate) to the sample rate used when capturing the samples." 143 30 144 31 parser = OptionParser(conflict_handler="resolve", usage=usage, description=description) … … 151 38 152 39 (options, args) = parser.parse_args () 153 if len(args) !=1:40 if len(args) < 1: 154 41 parser.print_help() 155 42 raise SystemExit, 1 156 filename = args[0]43 filenames = args 157 44 158 dc = draw_fft_c(filename, options) 45 datatype=scipy.int8 46 dc = plot_data(datatype, filenames, options) 159 47 160 48 if __name__ == "__main__": gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_const.py
r7654 r7655 36 36 self.sample_rate = options.sample_rate 37 37 38 self.datatype = scipy.complex64 39 self.sizeof_data = self.datatype().nbytes # number of bytes per sample in file 40 38 41 self.axis_font_size = 16 39 42 self.label_font_size = 18 … … 69 72 70 73 def get_data(self): 71 self.text_file_pos.set_text("File Position: %d" % (self.hfile.tell()// 8))72 iq = scipy.fromfile(self.hfile, dtype=s cipy.complex64, count=self.block_length)74 self.text_file_pos.set_text("File Position: %d" % (self.hfile.tell()//self.sizeof_data)) 75 iq = scipy.fromfile(self.hfile, dtype=self.datatype, count=self.block_length) 73 76 #print "Read in %d items" % len(iq) 74 77 if(len(iq) == 0): … … 82 85 def make_plots(self): 83 86 # if specified on the command-line, set file pointer 84 self.hfile.seek( 16*self.start, 1)87 self.hfile.seek(self.sizeof_data*self.start, 1) 85 88 86 89 self.get_data() … … 151 154 def step_backward(self): 152 155 # Step back in file position 153 if(self.hfile.tell() >= 16*self.block_length ):154 self.hfile.seek(- 16*self.block_length, 1)156 if(self.hfile.tell() >= 2*self.sizeof_data*self.block_length ): 157 self.hfile.seek(-2*self.sizeof_data*self.block_length, 1) 155 158 else: 156 159 self.hfile.seek(-self.hfile.tell(),1) gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_fft_c.py
r7654 r7655 36 36 self.start = options.start 37 37 self.sample_rate = options.sample_rate 38 39 self.datatype = scipy.complex64 40 self.sizeof_data = self.datatype().nbytes # number of bytes per sample in file 38 41 39 42 self.axis_font_size = 16 … … 71 74 72 75 def get_data(self): 73 self.text_file_pos.set_text("File Position: %d" % (self.hfile.tell()// 8))74 self.iq = scipy.fromfile(self.hfile, dtype=s cipy.complex64, count=self.block_length)76 self.text_file_pos.set_text("File Position: %d" % (self.hfile.tell()//self.sizeof_data)) 77 self.iq = scipy.fromfile(self.hfile, dtype=self.datatype, count=self.block_length) 75 78 #print "Read in %d items" % len(self.iq) 76 79 if(len(self.iq) == 0): … … 101 104 def make_plots(self): 102 105 # if specified on the command-line, set file pointer 103 self.hfile.seek( 16*self.start, 1)106 self.hfile.seek(self.sizeof_data*self.start, 1) 104 107 105 108 self.get_data() … … 176 179 def step_backward(self): 177 180 # Step back in file position 178 if(self.hfile.tell() >= 16*self.block_length ):179 self.hfile.seek(- 16*self.block_length, 1)181 if(self.hfile.tell() >= 2*self.sizeof_data*self.block_length ): 182 self.hfile.seek(-2*self.sizeof_data*self.block_length, 1) 180 183 else: 181 184 self.hfile.seek(-self.hfile.tell(),1) gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_fft_f.py
r7654 r7655 36 36 self.start = options.start 37 37 self.sample_rate = options.sample_rate 38 39 self.datatype = scipy.float32 40 self.sizeof_data = self.datatype().nbytes # number of bytes per sample in file 38 41 39 42 self.axis_font_size = 16 … … 71 74 72 75 def get_data(self): 73 self.text_file_pos.set_text("File Position: %d" % (self.hfile.tell()// 4))74 self.floats = scipy.fromfile(self.hfile, dtype=s cipy.float32, count=self.block_length)76 self.text_file_pos.set_text("File Position: %d" % (self.hfile.tell()//self.sizeof_data)) 77 self.floats = scipy.fromfile(self.hfile, dtype=self.datatype, count=self.block_length) 75 78 #print "Read in %d items" % len(self.floats) 76 79 if(len(self.floats) == 0): … … 104 107 def make_plots(self): 105 108 # if specified on the command-line, set file pointer 106 self.hfile.seek( 16*self.start, 1)109 self.hfile.seek(self.sizeof_data*self.start, 1) 107 110 108 111 self.get_data() … … 178 181 def step_backward(self): 179 182 # Step back in file position 180 if(self.hfile.tell() >= 8*self.block_length ):181 self.hfile.seek(- 8*self.block_length, 1)183 if(self.hfile.tell() >= 2*self.sizeof_data*self.block_length ): 184 self.hfile.seek(-2*self.sizeof_data*self.block_length, 1) 182 185 else: 183 186 self.hfile.seek(-self.hfile.tell(),1) gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_float.py
r7654 r7655 1 1 #!/usr/bin/env python 2 2 # 3 # Copyright 2007 Free Software Foundation, Inc.3 # Copyright 2007,2008 Free Software Foundation, Inc. 4 4 # 5 5 # This file is part of GNU Radio … … 22 22 23 23 import scipy 24 from pylab import *25 24 from optparse import OptionParser 26 27 matplotlib.interactive(True) 28 matplotlib.use('TkAgg') 29 30 class draw_fft_c: 31 def __init__(self, filename, options): 32 self.hfile = open(filename, "r") 33 self.block_length = options.block 34 self.start = options.start 35 self.sample_rate = options.sample_rate 36 37 self.axis_font_size = 16 38 self.label_font_size = 18 39 self.title_font_size = 20 40 self.text_size = 22 41 42 # Setup PLOT 43 self.fig = figure(1, figsize=(16, 9), facecolor='w') 44 rcParams['xtick.labelsize'] = self.axis_font_size 45 rcParams['ytick.labelsize'] = self.axis_font_size 46 47 self.text_file = figtext(0.10, 0.94, ("File: %s" % filename), weight="heavy", size=self.text_size) 48 self.text_file_pos = figtext(0.10, 0.88, "File Position: ", weight="heavy", size=self.text_size) 49 self.text_block = figtext(0.40, 0.88, ("Block Size: %d" % self.block_length), 50 weight="heavy", size=self.text_size) 51 self.text_sr = figtext(0.60, 0.88, ("Sample Rate: %.2f" % self.sample_rate), 52 weight="heavy", size=self.text_size) 53 self.make_plots() 54 55 self.button_left_axes = self.fig.add_axes([0.45, 0.01, 0.05, 0.05], frameon=True) 56 self.button_left = Button(self.button_left_axes, "<") 57 self.button_left_callback = self.button_left.on_clicked(self.button_left_click) 58 59 self.button_right_axes = self.fig.add_axes([0.50, 0.01, 0.05, 0.05], frameon=True) 60 self.button_right = Button(self.button_right_axes, ">") 61 self.button_right_callback = self.button_right.on_clicked(self.button_right_click) 62 63 self.xlim = self.sp_f.get_xlim() 64 65 self.manager = get_current_fig_manager() 66 connect('key_press_event', self.click) 67 show() 68 69 def get_data(self): 70 self.text_file_pos.set_text("File Position: %d" % (self.hfile.tell()//4)) 71 f = scipy.fromfile(self.hfile, dtype=scipy.float32, count=self.block_length) 72 #print "Read in %d items" % len(self.f) 73 if(len(f) == 0): 74 print "End of File" 75 else: 76 self.f = f 77 self.time = [i*(1/self.sample_rate) for i in range(len(self.f))] 78 79 def make_plots(self): 80 # if specified on the command-line, set file pointer 81 self.hfile.seek(8*self.start, 1) 82 83 self.get_data() 84 85 # Subplot for real and imaginary parts of signal 86 self.sp_f = self.fig.add_subplot(2,1,1, position=[0.075, 0.2, 0.875, 0.6]) 87 self.sp_f.set_title(("Amplitude"), fontsize=self.title_font_size, fontweight="bold") 88 self.sp_f.set_xlabel("Time (s)", fontsize=self.label_font_size, fontweight="bold") 89 self.sp_f.set_ylabel("Amplitude (V)", fontsize=self.label_font_size, fontweight="bold") 90 self.plot_f = plot(self.time, self.f, 'bo-') 91 self.sp_f.set_ylim([1.5*min(self.f), 92 1.5*max(self.f)]) 93 94 draw() 95 96 def update_plots(self): 97 self.plot_f[0].set_data([self.time, self.f]) 98 self.sp_f.set_ylim([1.5*min(self.f), 99 1.5*max(self.f)]) 100 draw() 101 102 def click(self, event): 103 forward_valid_keys = [" ", "down", "right"] 104 backward_valid_keys = ["up", "left"] 105 106 if(find(event.key, forward_valid_keys)): 107 self.step_forward() 108 109 elif(find(event.key, backward_valid_keys)): 110 self.step_backward() 111 112 def button_left_click(self, event): 113 self.step_backward() 114 115 def button_right_click(self, event): 116 self.step_forward() 117 118 def step_forward(self): 119 self.get_data() 120 self.update_plots() 121 122 def step_backward(self): 123 # Step back in file position 124 if(self.hfile.tell() >= 8*self.block_length ): 125 self.hfile.seek(-8*self.block_length, 1) 126 else: 127 self.hfile.seek(-self.hfile.tell(),1) 128 self.get_data() 129 self.update_plots() 130 131 132 133 #FIXME: there must be a way to do this with a Python builtin 134 def find(item_in, list_search): 135 for l in list_search: 136 if item_in == l: 137 return True 138 return False 25 from gr_plot_data import plot_data 139 26 140 27 def main(): 141 usage="%prog: [options] input_filename "28 usage="%prog: [options] input_filenames" 142 29 description = "Takes a GNU Radio floating point binary file and displays the samples versus time. You can set the block size to specify how many points to read in at a time and the start position in the file. By default, the system assumes a sample rate of 1, so in time, each sample is plotted versus the sample number. To set a true time axis, set the sample rate (-R or --sample-rate) to the sample rate used when capturing the samples." 143 30 … … 151 38 152 39 (options, args) = parser.parse_args () 153 if len(args) !=1:40 if len(args) < 1: 154 41 parser.print_help() 155 42 raise SystemExit, 1 156 filename = args[0]43 filenames = args 157 44 158 dc = draw_fft_c(filename, options) 45 datatype=scipy.float32 46 dc = plot_data(datatype, filenames, options) 159 47 160 48 if __name__ == "__main__": gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_int.py
r7654 r7655 1 1 #!/usr/bin/env python 2 2 # 3 # Copyright 2007 Free Software Foundation, Inc.3 # Copyright 2007,2008 Free Software Foundation, Inc. 4 4 # 5 5 # This file is part of GNU Radio … … 22 22 23 23 import scipy 24 from pylab import *25 24 from optparse import OptionParser 26 27 matplotlib.interactive(True) 28 matplotlib.use('TkAgg') 29 30 class draw_fft_c: 31 def __init__(self, filename, options): 32 self.hfile = open(filename, "r") 33 self.block_length = options.block 34 self.start = options.start 35 self.sample_rate = options.sample_rate 36 37 self.axis_font_size = 16 38 self.label_font_size = 18 39 self.title_font_size = 20 40 self.text_size = 22 41 42 # Setup PLOT 43 self.fig = figure(1, figsize=(16, 9), facecolor='w') 44 rcParams['xtick.labelsize'] = self.axis_font_size 45 rcParams['ytick.labelsize'] = self.axis_font_size 46 47 self.text_file = figtext(0.10, 0.94, ("File: %s" % filename), weight="heavy", size=self.text_size) 48 self.text_file_pos = figtext(0.10, 0.88, "File Position: ", weight="heavy", size=self.text_size) 49 self.text_block = figtext(0.40, 0.88, ("Block Size: %d" % self.block_length), 50 weight="heavy", size=self.text_size) 51 self.text_sr = figtext(0.60, 0.88, ("Sample Rate: %.2f" % self.sample_rate), 52 weight="heavy", size=self.text_size) 53 self.make_plots() 54 55 self.button_left_axes = self.fig.add_axes([0.45, 0.01, 0.05, 0.05], frameon=True) 56 self.button_left = Button(self.button_left_axes, "<") 57 self.button_left_callback = self.button_left.on_clicked(self.button_left_click) 58 59 self.button_right_axes = self.fig.add_axes([0.50, 0.01, 0.05, 0.05], frameon=True) 60 self.button_right = Button(self.button_right_axes, ">") 61 self.button_right_callback = self.button_right.on_clicked(self.button_right_click) 62 63 self.xlim = self.sp_f.get_xlim() 64 65 self.manager = get_current_fig_manager() 66 connect('key_press_event', self.click) 67 show() 68 69 def get_data(self): 70 self.text_file_pos.set_text("File Position: %d" % (self.hfile.tell()//4)) 71 f = scipy.fromfile(self.hfile, dtype=scipy.int32, count=self.block_length) 72 #print "Read in %d items" % len(self.f) 73 if(len(f) == 0): 74 print "End of File" 75 else: 76 self.f = f 77 self.time = [i*(1/self.sample_rate) for i in range(len(self.f))] 78 79 def make_plots(self): 80 # if specified on the command-line, set file pointer 81 self.hfile.seek(8*self.start, 1) 82 83 self.get_data() 84 85 # Subplot for real and imaginary parts of signal 86 self.sp_f = self.fig.add_subplot(2,1,1, position=[0.075, 0.2, 0.875, 0.6]) 87 self.sp_f.set_title(("Amplitude"), fontsize=self.title_font_size, fontweight="bold") 88 self.sp_f.set_xlabel("Time (s)", fontsize=self.label_font_size, fontweight="bold") 89 self.sp_f.set_ylabel("Amplitude (V)", fontsize=self.label_font_size, fontweight="bold") 90 self.plot_f = plot(self.time, self.f, 'bo-') 91 self.sp_f.set_ylim([1.5*min(self.f), 92 1.5*max(self.f)]) 93 94 draw() 95 96 def update_plots(self): 97 self.plot_f[0].set_data([self.time, self.f]) 98 self.sp_f.set_ylim([1.5*min(self.f), 99 1.5*max(self.f)]) 100 draw() 101 102 def click(self, event): 103 forward_valid_keys = [" ", "down", "right"] 104 backward_valid_keys = ["up", "left"] 105 106 if(find(event.key, forward_valid_keys)): 107 self.step_forward() 108 109 elif(find(event.key, backward_valid_keys)): 110 self.step_backward() 111 112 def button_left_click(self, event): 113 self.step_backward() 114 115 def button_right_click(self, event): 116 self.step_forward() 117 118 def step_forward(self): 119 self.get_data() 120 self.update_plots() 121 122 def step_backward(self): 123 # Step back in file position 124 if(self.hfile.tell() >= 8*self.block_length ): 125 self.hfile.seek(-8*self.block_length, 1) 126 else: 127 self.hfile.seek(-self.hfile.tell(),1) 128 self.get_data() 129 self.update_plots() 130 131 132 133 #FIXME: there must be a way to do this with a Python builtin 134 def find(item_in, list_search): 135 for l in list_search: 136 if item_in == l: 137 return True 138 return False 25 from gr_plot_data import plot_data 139 26 140 27 def main(): 141 usage="%prog: [options] input_filename "142 description = "Takes a GNU Radio floating pointbinary file and displays the samples versus time. You can set the block size to specify how many points to read in at a time and the start position in the file. By default, the system assumes a sample rate of 1, so in time, each sample is plotted versus the sample number. To set a true time axis, set the sample rate (-R or --sample-rate) to the sample rate used when capturing the samples."28 usage="%prog: [options] input_filenames" 29 description = "Takes a GNU Radio integer binary file and displays the samples versus time. You can set the block size to specify how many points to read in at a time and the start position in the file. By default, the system assumes a sample rate of 1, so in time, each sample is plotted versus the sample number. To set a true time axis, set the sample rate (-R or --sample-rate) to the sample rate used when capturing the samples." 143 30 144 31 parser = OptionParser(conflict_handler="resolve", usage=usage, description=description) … … 151 38 152 39 (options, args) = parser.parse_args () 153 if len(args) !=1:40 if len(args) < 1: 154 41 parser.print_help() 155 42 raise SystemExit, 1 156 filename = args[0]43 filenames = args 157 44 158 dc = draw_fft_c(filename, options) 45 datatype=scipy.int32 46 dc = plot_data(datatype, filenames, options) 159 47 160 48 if __name__ == "__main__": gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_iq.py
r7654 r7655 35 35 self.sample_rate = options.sample_rate 36 36 37 self.datatype = scipy.complex64 38 self.sizeof_data = self.datatype().nbytes # number of bytes per sample in file 39 37 40 self.axis_font_size = 16 38 41 self.label_font_size = 18 … … 68 71 69 72 def get_data(self): 70 self.text_file_pos.set_text("File Position: %d" % (self.hfile.tell()// 8))71 self.iq = scipy.fromfile(self.hfile, dtype=s cipy.complex64, count=self.block_length)73 self.text_file_pos.set_text("File Position: %d" % (self.hfile.tell()//self.sizeof_data)) 74 self.iq = scipy.fromfile(self.hfile, dtype=self.datatype, count=self.block_length) 72 75 #print "Read in %d items" % len(self.iq) 73 76 if(len(self.iq) == 0): … … 80 83 def make_plots(self): 81 84 # if specified on the command-line, set file pointer 82 self.hfile.seek( 16*self.start, 1)85 self.hfile.seek(self.sizeof_data*self.start, 1) 83 86 84 87 self.get_data() … … 124 127 def step_backward(self): 125 128 # Step back in file position 126 if(self.hfile.tell() >= 16*self.block_length ):127 self.hfile.seek(- 16*self.block_length, 1)129 if(self.hfile.tell() >= 2*self.sizeof_data*self.block_length ): 130 self.hfile.seek(-2*self.sizeof_data*self.block_length, 1) 128 131 else: 129 132 self.hfile.seek(-self.hfile.tell(),1) gnuradio/branches/releases/3.1/gnuradio-core/src/utils/gr_plot_short.py
r7654 r7655 1 1 #!/usr/bin/env python 2 2 # 3 # Copyright 2007 Free Software Foundation, Inc.3 # Copyright 2007,2008 Free Software Foundation, Inc. 4 4 # 5 5 # This file is part of GNU Radio … … 22 22 23 23 import scipy 24 from pylab import *25 24 from optparse import OptionParser 26 27 matplotlib.interactive(True) 28 matplotlib.use('TkAgg') 29 30 class draw_fft_c: 31 def __init__(self, filename, options): 32 self.hfile = open(filename, "r") 33 self.block_length = options.block 34 self.start = options.start 35 self.sample_rate = options.sample_rate 36 37 self.axis_font_size = 16 38 self.label_font_size = 18 39 self.title_font_size = 20 40 self.text_size = 22 41 42 # Setup PLOT 43 self.fig = figure(1, figsize=(16, 9), facecolor='w') 44 rcParams['xtick.labelsize'] = self.axis_font_size 45 rcParams['ytick.labelsize'] = self.axis_font_size 46 47 self.text_file = figtext(0.10, 0.94, ("File: %s" % filename), weight="heavy", size=self.text_size) 48 self.text_file_pos = figtext(0.10, 0.88, "File Position: ", weight="heavy", size=self.text_size) 49 self.text_block = figtext(0.40, 0.88, ("Block Size: %d" % self.block_length), 50 weight="heavy", size=self.text_size) 51 self.text_sr = figtext(0.60, 0.88, ("Sample Rate: %.2f" % self.sample_rate), 52 weight="heavy", size=self.text_size) 53 self.make_plots() 54 55 self.button_left_axes = self.fig.add_axes([0.45, 0.01, 0.05, 0.05], frameon=True) 56 self.button_left = Button(self.button_left_axes, "<") 57 self.button_left_callback = self.button_left.on_clicked(self.button_left_click) 58 59 self.button_right_axes = self.fig.add_axes([0.50, 0.01, 0.05, 0.05], frameon=True) 60 self.button_right = Button(self.button_right_axes, ">") 61 self.button_right_callback = self.button_right.on_clicked(self.button_right_click) 62 63 self.xlim = self.sp_f.get_xlim() 64 65 self.manager = get_current_fig_manager() 66 connect('key_press_event', self.click) 67 show() 68 69 def get_data(self): 70 self.text_file_pos.set_text("File Position: %d" % (self.hfile.tell()//2)) 71 f = scipy.fromfile(self.hfile, dtype=scipy.int16, count=self.block_length) 72 #print "Read in %d items" % len(self.f) 73 if(len(f) == 0): 74 print "End of File" 75 else: 76 self.f = f 77 self.time = [i*(1/self.sample_rate) for i in range(len(self.f))] 78 79 def make_plots(self): 80 # if specified on the command-line, set file pointer 81 self.hfile.seek(8*self.start, 1) 82 83 self.get_data() 84 85 # Subplot for real and imaginary parts of signal 86 self.sp_f = self.fig.add_subplot(2,1,1, position=[0.075, 0.2, 0.875, 0.6]) 87 self.sp_f.set_title(("Amplitude"), fontsize=self.title_font_size, fontweight="bold") 88 self.sp_f.set_xlabel("Time (s)", fontsize=self.label_font_size, fontweight="bold") 89 self.sp_f.set_ylabel("Amplitude (V)", fontsize=self.label_font_size, fontweight="bold") 90 self.plot_f = plot(self.time, self.f, 'bo-') 91 self.sp_f.set_ylim([1.5*min(self.f), 92 1.5*max(self.f)]) 93 94 draw() 95 96 def update_plots(self): 97 self.plot_f[0].set_data([self.time, self.f]) 98 self.sp_f.set_ylim([1.5*min(self.f), 99 1.5*max(self.f)]) 100 draw() 101 102 def click(self, event): 103 forward_valid_keys = [" ", "down", "right"] 104 backward_valid_keys = ["up", "left"] 105 106 if(find(event.key, forward_valid_keys)): 107 self.step_forward() 108 109 elif(find(event.key, backward_valid_keys)): 110 self.step_backward() 111 112 def button_left_click(self, event): 113 self.step_backward() 114 115 def button_right_click(self, event): 116 self.step_forward() 117 118 def step_forward(self): 119 self.get_data() 120 self.update_plots() 121 122 def step_backward(self): 123 # Step back in file position 124 if(self.hfile.tell() >= 4*self.block_length ): 125 self.hfile.seek(-4*self.block_length, 1) 126 else: 127 self.hfile.seek(-self.hfile.tell(),1) 128 self.get_data() 129 self.update_plots() 130 131 132 133 #FIXME: there must be a way to do this with a Python builtin 134 def find(item_in, list_search): 135 for l in list_search: 136 if item_in == l: 137 return True 138 return False 25 from gr_plot_data import plot_data 139 26 140 27 def main(): 141 usage="%prog: [options] input_filename "142 description = "Takes a GNU Radio floating pointbinary file and displays the samples versus time. You can set the block size to specify how many points to read in at a time and the start position in the file. By default, the system assumes a sample rate of 1, so in time, each sample is plotted versus the sample number. To set a true time axis, set the sample rate (-R or --sample-rate) to the sample rate used when capturing the samples."28 usage="%prog: [options] input_filenames" 29 description = "Takes a GNU Radio short integer binary file and displays the samples versus time. You can set the block size to specify how many points to read in at a time and the start position in the file. By default, the system assumes a sample rate of 1, so in time, each sample is plotted versus the sample number. To set a true time axis, set the sample rate (-R or --sample-rate) to the sample rate used when capturing the samples." 143 30 144 31 parser = OptionParser(conflict_handler="resolve", usage=usage, description=description) … … 151 38 152 39 (options, args) = parser.parse_args () 153 if len(args) !=1:40 if len(args) < 1: 154 41 parser.print_help() 155 42 raise SystemExit, 1 156 filename = args[0]43 filenames = args 157 44 158 dc = draw_fft_c(filename, options) 45 datatype=scipy.int16 46 dc = plot_data(datatype, filenames, options) 159 47 160 48 if __name__ == "__main__":
