commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r8735 - gnuradio/branches/developers/jblum/gr-wxglgui/


From: jblum
Subject: [Commit-gnuradio] r8735 - gnuradio/branches/developers/jblum/gr-wxglgui/src/python
Date: Thu, 26 Jun 2008 19:12:23 -0600 (MDT)

Author: jblum
Date: 2008-06-26 19:12:22 -0600 (Thu, 26 Jun 2008)
New Revision: 8735

Modified:
   gnuradio/branches/developers/jblum/gr-wxglgui/src/python/fftsink.py
   gnuradio/branches/developers/jblum/gr-wxglgui/src/python/plotter.py
Log:
outer border and units

Modified: gnuradio/branches/developers/jblum/gr-wxglgui/src/python/fftsink.py
===================================================================
--- gnuradio/branches/developers/jblum/gr-wxglgui/src/python/fftsink.py 
2008-06-27 00:35:36 UTC (rev 8734)
+++ gnuradio/branches/developers/jblum/gr-wxglgui/src/python/fftsink.py 
2008-06-27 01:12:22 UTC (rev 8735)
@@ -126,6 +126,9 @@
                self, 
                parent, 
                title,
+               real,
+               baseband_freq,
+               sample_rate,
                y_per_div,
                y_divs,
                ref_level,
@@ -142,9 +145,36 @@
                self.average = average
                self.peak_hold = peak_hold
                self.set_average = set_average
+               self.peak_vals = []
+               #determine units
+               if sample_rate > 5e9:
+                       units = 'GHz'
+                       power = 9
+               elif sample_rate > 5e6:
+                       units = 'MHz'
+                       power = 6
+               elif sample_rate > 5e3:
+                       units = 'KHz'
+                       power = 3
+               else:
+                       units = 'Hz'
+                       power = 0
+               scalar = 10**(-1*power)
                #init panel and plot 
                wx.Panel.__init__(self, parent, -1)                             
  
-               self.plotter = plotter.grid_plotter(self, title, 
'Frequency(Hz)', 'Amplitude(dB)', 35, 10, 40, 60)   
+               self.plotter = plotter.grid_plotter(self, title, 
'Frequency(%s)'%units, 'Amplitude(dB)', 35, 10, 40, 60)  
+               if real: 
+                       self.plotter.set_x_grid(
+                               scalar*baseband_freq, 
+                               scalar*baseband_freq + scalar*sample_rate/2.0, 
+                               scalar*int(sample_rate/16),
+                       ) 
+               else:
+                       self.plotter.set_x_grid(
+                               scalar*baseband_freq - scalar*sample_rate/2.0, 
+                               scalar*baseband_freq + scalar*sample_rate/2.0, 
+                               scalar*int(sample_rate/8),
+                       )
                #setup the box with plot and controls
                self.control_panel = control_panel(self)
                main_box = wx.BoxSizer(wx.HORIZONTAL)
@@ -155,12 +185,23 @@
                self.update()
                
        def plot(self, samples):
+               #peak hold calculation
+               if self.peak_hold and len(peak_vals) != len(samples): 
self.peak_vals = samples
+               if self.peak_hold: self.peak_hold = numpy.maximum(samples, 
self.peak_vals)
+               #plot the fft
                self.plotter.set_waveform(
                        channel=1, 
                        samples=samples, 
                        offset=0.0, 
+                       color_spec=(0, 0, 1),
+               )
+               #plot the peak hold
+               self.plotter.set_waveform(
+                       channel=2, 
+                       samples=self.peak_vals, 
+                       offset=0.0, 
                        color_spec=(0, 1, 0),
-               )
+               )               
                #update the plotter
                self.plotter.update()
        
@@ -168,7 +209,7 @@
                #update average
                self.set_average(self.average)
                #update peak hold
-               #TODO
+               if not self.peak_hold: self.peak_vals = []
                #update y grid
                
self.plotter.set_y_grid(self.ref_level-self.y_per_div*self.y_divs, 
self.ref_level, self.y_per_div)
                #update control panel if non-gui changes occured
@@ -309,6 +350,7 @@
                title='', 
                peak_hold=False,
        ): 
+               self.real = self.item_size == gr.sizeof_float
                #ensure avg alpha
                if avg_alpha is None: avg_alpha = 2.0/fft_rate
                #init
@@ -333,7 +375,10 @@
                #create window
                self.win = fft_window(
                        parent=parent, 
-                       title=title,                    
+                       title=title,
+                       real = self.real,
+                       baseband_freq=baseband_freq,
+                       sample_rate=sample_rate,        
                        y_per_div=y_per_div,
                        y_divs=y_divs,
                        ref_level=ref_level,                    
@@ -342,12 +387,8 @@
                        set_average=fft.set_average,    
                )
                #setup x grid and setup the input watcher
-               if self.item_size == gr.sizeof_float:
-                       self.win.plotter.set_x_grid(baseband_freq, 
baseband_freq + sample_rate/2.0, int(sample_rate/16))
-                       input_watcher(fft.msgq, self.win.plot)
-               else:
-                       self.win.plotter.set_x_grid(baseband_freq - 
sample_rate/2.0, baseband_freq + sample_rate/2.0, int(sample_rate/8))
-                       input_watcher(fft.msgq, self._handle_complex_samples)   
        
+               if self.real: input_watcher(fft.msgq, self.win.plot)
+               else: input_watcher(fft.msgq, self._handle_complex_samples)
                
        def _handle_complex_samples(self, samples):
                """!
@@ -374,8 +415,8 @@
                input_rate = 20.48e3
 
                # Generate a complex sinusoid
-               src1 = gr.sig_source_c (input_rate, gr.GR_SIN_WAVE, 2e3, 1)
-               #src1 = gr.sig_source_c (input_rate, gr.GR_CONST_WAVE, 5.75e3, 
1)
+               #src1 = gr.sig_source_c (input_rate, gr.GR_SIN_WAVE, 2e3, 1)
+               src1 = gr.sig_source_c (input_rate, gr.GR_CONST_WAVE, 5.75e3, 1)
 
                # We add these throttle blocks so that this demo doesn't
                # suck down all the CPU available.  Normally you wouldn't use 
these.
@@ -388,8 +429,8 @@
 
                self.connect(src1, thr1, sink1)
 
-               src2 = gr.sig_source_f (input_rate, gr.GR_SIN_WAVE, 2e3, 1)
-               #src2 = gr.sig_source_f (input_rate, gr.GR_CONST_WAVE, 5.75e3, 
1)
+               #src2 = gr.sig_source_f (input_rate, gr.GR_SIN_WAVE, 2e3, 1)
+               src2 = gr.sig_source_f (input_rate, gr.GR_CONST_WAVE, 5.75e3, 1)
                thr2 = gr.throttle(gr.sizeof_float, input_rate)
                sink2 = fft_sink_f (frame, title="Real Data", 
fft_size=fft_size*2,
                                                        sample_rate=input_rate, 
baseband_freq=100e3,
@@ -405,7 +446,7 @@
        vbox = wx.BoxSizer(wx.VERTICAL)
        test_app_block(frame, vbox)
        frame.SetSizerAndFit(vbox)
-       frame.SetSize(wx.Size(700, 300))
+       frame.SetSize(wx.Size(800, 600))
        frame.Show()
        app.MainLoop()
 

Modified: gnuradio/branches/developers/jblum/gr-wxglgui/src/python/plotter.py
===================================================================
--- gnuradio/branches/developers/jblum/gr-wxglgui/src/python/plotter.py 
2008-06-27 00:35:36 UTC (rev 8734)
+++ gnuradio/branches/developers/jblum/gr-wxglgui/src/python/plotter.py 
2008-06-27 01:12:22 UTC (rev 8735)
@@ -192,7 +192,7 @@
                self._draw_rect(0, 0, self.padding_left, self.height)
                
                ##################################################
-               # Draw Border
+               # Draw Inner Border
                ##################################################
                glColor3f(*GRID_LINE_COLOR_SPEC)
                glBegin(GL_LINE_LOOP)
@@ -203,6 +203,17 @@
                glEnd()
                
                ##################################################
+               # Draw Outter Border
+               ##################################################
+               glColor3f(*GRID_LINE_COLOR_SPEC)
+               glBegin(GL_LINE_LOOP)
+               glVertex3f(1, 1, 0)
+               glVertex3f(self.width, 1, 0)
+               glVertex3f(self.width, self.height, 0)
+               glVertex3f(1, self.height, 0)
+               glEnd()
+               
+               ##################################################
                # Draw Grid X
                ##################################################
                for tick in self._get_ticks(self.x_min, self.x_max, 
self.x_step):





reply via email to

[Prev in Thread] Current Thread [Next in Thread]