[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r3454 - gnuradio/trunk/gr-wxgui/src/python
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r3454 - gnuradio/trunk/gr-wxgui/src/python |
Date: |
Thu, 31 Aug 2006 00:30:59 -0600 (MDT) |
Author: jcorgan
Date: 2006-08-31 00:30:59 -0600 (Thu, 31 Aug 2006)
New Revision: 3454
Modified:
gnuradio/trunk/gr-wxgui/src/python/waterfallsink.py
Log:
Applied patch in ticket:59 by Don Ward. Updates waterfallsink.py to use
messages instead of pipes.
Modified: gnuradio/trunk/gr-wxgui/src/python/waterfallsink.py
===================================================================
--- gnuradio/trunk/gr-wxgui/src/python/waterfallsink.py 2006-08-30 21:59:48 UTC
(rev 3453)
+++ gnuradio/trunk/gr-wxgui/src/python/waterfallsink.py 2006-08-31 06:30:59 UTC
(rev 3454)
@@ -50,7 +50,7 @@
self.avg_alpha = avg_alpha
self.title = title
self.input_is_real = input_is_real
- (self.r_fd, self.w_fd) = os.pipe()
+ self.msgq = gr.msg_queue(2) # queue up to 2 messages
def set_average(self, average):
self.average = average
@@ -91,7 +91,7 @@
c2mag = gr.complex_to_mag(self.fft_size)
self.avg = gr.single_pole_iir_filter_ff(1.0, self.fft_size)
log = gr.nlog10_ff(20, self.fft_size, -20*math.log10(self.fft_size))
- sink = gr.file_descriptor_sink(gr.sizeof_float * self.fft_size,
self.w_fd)
+ sink = gr.message_sink(gr.sizeof_float * self.fft_size, self.msgq,
True)
fg.connect (s2p, self.one_in_n, fft, c2mag, self.avg, log, sink)
gr.hier_block.__init__(self, fg, s2p, sink)
@@ -120,7 +120,7 @@
c2mag = gr.complex_to_mag(self.fft_size)
self.avg = gr.single_pole_iir_filter_ff(1.0, self.fft_size)
log = gr.nlog10_ff(20, self.fft_size, -20*math.log10(self.fft_size))
- sink = gr.file_descriptor_sink(gr.sizeof_float * self.fft_size,
self.w_fd)
+ sink = gr.message_sink(gr.sizeof_float * self.fft_size, self.msgq,
True)
fg.connect(s2p, self.one_in_n, fft, c2mag, self.avg, log, sink)
gr.hier_block.__init__(self, fg, s2p, sink)
@@ -146,10 +146,10 @@
class input_watcher (threading.Thread):
- def __init__ (self, file_descriptor, fft_size, event_receiver, **kwds):
+ def __init__ (self, msgq, fft_size, event_receiver, **kwds):
threading.Thread.__init__ (self, **kwds)
self.setDaemon (1)
- self.file_descriptor = file_descriptor
+ self.msgq = msgq
self.fft_size = fft_size
self.event_receiver = event_receiver
self.keep_running = True
@@ -157,12 +157,18 @@
def run (self):
while (self.keep_running):
- s = gru.os_read_exactly (self.file_descriptor,
- gr.sizeof_float * self.fft_size)
- if not s:
- self.keep_running = False
- break
+ msg = self.msgq.delete_head() # blocking read of message queue
+ itemsize = int(msg.arg1())
+ nitems = int(msg.arg2())
+ s = msg.to_string() # get the body of the msg as a
string
+
+ # There may be more than one FFT frame in the message.
+ # If so, we take only the last one
+ if nitems > 1:
+ start = itemsize * (nitems - 1)
+ s = s[start:start+itemsize]
+
complex_data = Numeric.fromstring (s, Numeric.Float32)
de = DataEvent (complex_data)
wx.PostEvent (self.event_receiver, de)
@@ -195,7 +201,7 @@
wx.EVT_CLOSE (self, self.on_close_window)
self.Bind(wx.EVT_RIGHT_UP, self.on_right_click)
- self.input_watcher = input_watcher(fftsink.r_fd, fftsink.fft_size,
self)
+ self.input_watcher = input_watcher(fftsink.msgq, fftsink.fft_size,
self)
def on_close_window (self, event):
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r3454 - gnuradio/trunk/gr-wxgui/src/python,
jcorgan <=