Commit 6ece6f5212eaa62e8b789ea4d9f8e597a8a8672f
1 parent
3600e4e382
Exists in
master
use resamplers instead LP
Showing 2 changed files with 295 additions and 103 deletions Side-by-side Diff
fm_radio/fm_radio.grc
| ... | ... | @@ -82,6 +82,33 @@ |
| 82 | 82 | </param> |
| 83 | 83 | </block> |
| 84 | 84 | <block> |
| 85 | + <key>variable</key> | |
| 86 | + <param> | |
| 87 | + <key>comment</key> | |
| 88 | + <value></value> | |
| 89 | + </param> | |
| 90 | + <param> | |
| 91 | + <key>_enabled</key> | |
| 92 | + <value>True</value> | |
| 93 | + </param> | |
| 94 | + <param> | |
| 95 | + <key>_coordinate</key> | |
| 96 | + <value>(176, 160)</value> | |
| 97 | + </param> | |
| 98 | + <param> | |
| 99 | + <key>_rotation</key> | |
| 100 | + <value>0</value> | |
| 101 | + </param> | |
| 102 | + <param> | |
| 103 | + <key>id</key> | |
| 104 | + <value>decim</value> | |
| 105 | + </param> | |
| 106 | + <param> | |
| 107 | + <key>value</key> | |
| 108 | + <value>4</value> | |
| 109 | + </param> | |
| 110 | + </block> | |
| 111 | + <block> | |
| 85 | 112 | <key>variable_qtgui_range</key> |
| 86 | 113 | <param> |
| 87 | 114 | <key>comment</key> |
| ... | ... | @@ -89,7 +116,7 @@ |
| 89 | 116 | </param> |
| 90 | 117 | <param> |
| 91 | 118 | <key>value</key> |
| 92 | - <value>100e6</value> | |
| 119 | + <value>98.7e6</value> | |
| 93 | 120 | </param> |
| 94 | 121 | <param> |
| 95 | 122 | <key>_enabled</key> |
| ... | ... | @@ -168,7 +195,7 @@ |
| 168 | 195 | </param> |
| 169 | 196 | <param> |
| 170 | 197 | <key>value</key> |
| 171 | - <value>2e6</value> | |
| 198 | + <value>48e3</value> | |
| 172 | 199 | </param> |
| 173 | 200 | </block> |
| 174 | 201 | <block> |
| ... | ... | @@ -195,7 +222,7 @@ |
| 195 | 222 | </param> |
| 196 | 223 | <param> |
| 197 | 224 | <key>_coordinate</key> |
| 198 | - <value>(624, 448)</value> | |
| 225 | + <value>(608, 448)</value> | |
| 199 | 226 | </param> |
| 200 | 227 | <param> |
| 201 | 228 | <key>_rotation</key> |
| ... | ... | @@ -215,7 +242,7 @@ |
| 215 | 242 | </param> |
| 216 | 243 | <param> |
| 217 | 244 | <key>quad_rate</key> |
| 218 | - <value>500e3</value> | |
| 245 | + <value>samp_rate*10</value> | |
| 219 | 246 | </param> |
| 220 | 247 | </block> |
| 221 | 248 | <block> |
| ... | ... | @@ -242,7 +269,7 @@ |
| 242 | 269 | </param> |
| 243 | 270 | <param> |
| 244 | 271 | <key>_coordinate</key> |
| 245 | - <value>(1032, 456)</value> | |
| 272 | + <value>(1104, 456)</value> | |
| 246 | 273 | </param> |
| 247 | 274 | <param> |
| 248 | 275 | <key>_rotation</key> |
| 249 | 276 | |
| 250 | 277 | |
| ... | ... | @@ -262,89 +289,14 @@ |
| 262 | 289 | </param> |
| 263 | 290 | <param> |
| 264 | 291 | <key>samp_rate</key> |
| 265 | - <value>48000</value> | |
| 292 | + <value>int(samp_rate)</value> | |
| 266 | 293 | </param> |
| 267 | 294 | </block> |
| 268 | 295 | <block> |
| 269 | - <key>low_pass_filter</key> | |
| 270 | - <param> | |
| 271 | - <key>beta</key> | |
| 272 | - <value>6.76</value> | |
| 273 | - </param> | |
| 274 | - <param> | |
| 275 | - <key>alias</key> | |
| 276 | - <value></value> | |
| 277 | - </param> | |
| 278 | - <param> | |
| 279 | - <key>comment</key> | |
| 280 | - <value></value> | |
| 281 | - </param> | |
| 282 | - <param> | |
| 283 | - <key>affinity</key> | |
| 284 | - <value></value> | |
| 285 | - </param> | |
| 286 | - <param> | |
| 287 | - <key>cutoff_freq</key> | |
| 288 | - <value>500e3</value> | |
| 289 | - </param> | |
| 290 | - <param> | |
| 291 | - <key>decim</key> | |
| 292 | - <value>4</value> | |
| 293 | - </param> | |
| 294 | - <param> | |
| 295 | - <key>_enabled</key> | |
| 296 | - <value>True</value> | |
| 297 | - </param> | |
| 298 | - <param> | |
| 299 | - <key>type</key> | |
| 300 | - <value>fir_filter_ccf</value> | |
| 301 | - </param> | |
| 302 | - <param> | |
| 303 | - <key>_coordinate</key> | |
| 304 | - <value>(408, 408)</value> | |
| 305 | - </param> | |
| 306 | - <param> | |
| 307 | - <key>_rotation</key> | |
| 308 | - <value>0</value> | |
| 309 | - </param> | |
| 310 | - <param> | |
| 311 | - <key>gain</key> | |
| 312 | - <value>1</value> | |
| 313 | - </param> | |
| 314 | - <param> | |
| 315 | - <key>id</key> | |
| 316 | - <value>low_pass_filter_0</value> | |
| 317 | - </param> | |
| 318 | - <param> | |
| 319 | - <key>interp</key> | |
| 320 | - <value>1</value> | |
| 321 | - </param> | |
| 322 | - <param> | |
| 323 | - <key>maxoutbuf</key> | |
| 324 | - <value>0</value> | |
| 325 | - </param> | |
| 326 | - <param> | |
| 327 | - <key>minoutbuf</key> | |
| 328 | - <value>0</value> | |
| 329 | - </param> | |
| 330 | - <param> | |
| 331 | - <key>samp_rate</key> | |
| 332 | - <value>samp_rate</value> | |
| 333 | - </param> | |
| 334 | - <param> | |
| 335 | - <key>width</key> | |
| 336 | - <value>1e6</value> | |
| 337 | - </param> | |
| 338 | - <param> | |
| 339 | - <key>win</key> | |
| 340 | - <value>firdes.WIN_HAMMING</value> | |
| 341 | - </param> | |
| 342 | - </block> | |
| 343 | - <block> | |
| 344 | 296 | <key>qtgui_sink_x</key> |
| 345 | 297 | <param> |
| 346 | 298 | <key>bw</key> |
| 347 | - <value>samp_rate</value> | |
| 299 | + <value>samp_rate*10*4</value> | |
| 348 | 300 | </param> |
| 349 | 301 | <param> |
| 350 | 302 | <key>alias</key> |
| ... | ... | @@ -368,7 +320,7 @@ |
| 368 | 320 | </param> |
| 369 | 321 | <param> |
| 370 | 322 | <key>_enabled</key> |
| 371 | - <value>True</value> | |
| 323 | + <value>0</value> | |
| 372 | 324 | </param> |
| 373 | 325 | <param> |
| 374 | 326 | <key>fftsize</key> |
| ... | ... | @@ -376,7 +328,7 @@ |
| 376 | 328 | </param> |
| 377 | 329 | <param> |
| 378 | 330 | <key>_coordinate</key> |
| 379 | - <value>(392, 584)</value> | |
| 331 | + <value>(392, 184)</value> | |
| 380 | 332 | </param> |
| 381 | 333 | <param> |
| 382 | 334 | <key>gui_hint</key> |
| ... | ... | @@ -443,7 +395,7 @@ |
| 443 | 395 | <key>qtgui_sink_x</key> |
| 444 | 396 | <param> |
| 445 | 397 | <key>bw</key> |
| 446 | - <value>samp_rate/4</value> | |
| 398 | + <value>samp_rate/decim</value> | |
| 447 | 399 | </param> |
| 448 | 400 | <param> |
| 449 | 401 | <key>alias</key> |
| ... | ... | @@ -475,7 +427,7 @@ |
| 475 | 427 | </param> |
| 476 | 428 | <param> |
| 477 | 429 | <key>_coordinate</key> |
| 478 | - <value>(632, 584)</value> | |
| 430 | + <value>(840, 176)</value> | |
| 479 | 431 | </param> |
| 480 | 432 | <param> |
| 481 | 433 | <key>gui_hint</key> |
| ... | ... | @@ -487,7 +439,7 @@ |
| 487 | 439 | </param> |
| 488 | 440 | <param> |
| 489 | 441 | <key>id</key> |
| 490 | - <value>qtgui_sink_x_0_0</value> | |
| 442 | + <value>qtgui_sink_x_1</value> | |
| 491 | 443 | </param> |
| 492 | 444 | <param> |
| 493 | 445 | <key>maxoutbuf</key> |
| ... | ... | @@ -527,7 +479,7 @@ |
| 527 | 479 | </param> |
| 528 | 480 | <param> |
| 529 | 481 | <key>type</key> |
| 530 | - <value>complex</value> | |
| 482 | + <value>float</value> | |
| 531 | 483 | </param> |
| 532 | 484 | <param> |
| 533 | 485 | <key>rate</key> |
| 534 | 486 | |
| ... | ... | @@ -554,11 +506,11 @@ |
| 554 | 506 | </param> |
| 555 | 507 | <param> |
| 556 | 508 | <key>decim</key> |
| 557 | - <value>500</value> | |
| 509 | + <value>10</value> | |
| 558 | 510 | </param> |
| 559 | 511 | <param> |
| 560 | 512 | <key>_enabled</key> |
| 561 | - <value>True</value> | |
| 513 | + <value>1</value> | |
| 562 | 514 | </param> |
| 563 | 515 | <param> |
| 564 | 516 | <key>fbw</key> |
| ... | ... | @@ -566,7 +518,7 @@ |
| 566 | 518 | </param> |
| 567 | 519 | <param> |
| 568 | 520 | <key>_coordinate</key> |
| 569 | - <value>(824, 432)</value> | |
| 521 | + <value>(848, 432)</value> | |
| 570 | 522 | </param> |
| 571 | 523 | <param> |
| 572 | 524 | <key>_rotation</key> |
| ... | ... | @@ -578,7 +530,7 @@ |
| 578 | 530 | </param> |
| 579 | 531 | <param> |
| 580 | 532 | <key>interp</key> |
| 581 | - <value>48</value> | |
| 533 | + <value>1</value> | |
| 582 | 534 | </param> |
| 583 | 535 | <param> |
| 584 | 536 | <key>maxoutbuf</key> |
| ... | ... | @@ -598,6 +550,65 @@ |
| 598 | 550 | </param> |
| 599 | 551 | </block> |
| 600 | 552 | <block> |
| 553 | + <key>rational_resampler_xxx</key> | |
| 554 | + <param> | |
| 555 | + <key>alias</key> | |
| 556 | + <value></value> | |
| 557 | + </param> | |
| 558 | + <param> | |
| 559 | + <key>comment</key> | |
| 560 | + <value></value> | |
| 561 | + </param> | |
| 562 | + <param> | |
| 563 | + <key>affinity</key> | |
| 564 | + <value></value> | |
| 565 | + </param> | |
| 566 | + <param> | |
| 567 | + <key>decim</key> | |
| 568 | + <value>4</value> | |
| 569 | + </param> | |
| 570 | + <param> | |
| 571 | + <key>_enabled</key> | |
| 572 | + <value>1</value> | |
| 573 | + </param> | |
| 574 | + <param> | |
| 575 | + <key>fbw</key> | |
| 576 | + <value>0</value> | |
| 577 | + </param> | |
| 578 | + <param> | |
| 579 | + <key>_coordinate</key> | |
| 580 | + <value>(400, 432)</value> | |
| 581 | + </param> | |
| 582 | + <param> | |
| 583 | + <key>_rotation</key> | |
| 584 | + <value>0</value> | |
| 585 | + </param> | |
| 586 | + <param> | |
| 587 | + <key>id</key> | |
| 588 | + <value>rational_resampler_xxx_0_0</value> | |
| 589 | + </param> | |
| 590 | + <param> | |
| 591 | + <key>interp</key> | |
| 592 | + <value>1</value> | |
| 593 | + </param> | |
| 594 | + <param> | |
| 595 | + <key>maxoutbuf</key> | |
| 596 | + <value>0</value> | |
| 597 | + </param> | |
| 598 | + <param> | |
| 599 | + <key>minoutbuf</key> | |
| 600 | + <value>0</value> | |
| 601 | + </param> | |
| 602 | + <param> | |
| 603 | + <key>taps</key> | |
| 604 | + <value></value> | |
| 605 | + </param> | |
| 606 | + <param> | |
| 607 | + <key>type</key> | |
| 608 | + <value>ccc</value> | |
| 609 | + </param> | |
| 610 | + </block> | |
| 611 | + <block> | |
| 601 | 612 | <key>rtlsdr_source</key> |
| 602 | 613 | <param> |
| 603 | 614 | <key>alias</key> |
| ... | ... | @@ -1897,7 +1908,7 @@ |
| 1897 | 1908 | </param> |
| 1898 | 1909 | <param> |
| 1899 | 1910 | <key>_enabled</key> |
| 1900 | - <value>True</value> | |
| 1911 | + <value>1</value> | |
| 1901 | 1912 | </param> |
| 1902 | 1913 | <param> |
| 1903 | 1914 | <key>_coordinate</key> |
| ... | ... | @@ -1997,7 +2008,7 @@ |
| 1997 | 2008 | </param> |
| 1998 | 2009 | <param> |
| 1999 | 2010 | <key>sample_rate</key> |
| 2000 | - <value>samp_rate</value> | |
| 2011 | + <value>samp_rate*10*4</value> | |
| 2001 | 2012 | </param> |
| 2002 | 2013 | <param> |
| 2003 | 2014 | <key>sync</key> |
| 2004 | 2015 | |
| 2005 | 2016 | |
| 2006 | 2017 | |
| 2007 | 2018 | |
| 2008 | 2019 | |
| ... | ... | @@ -2006,37 +2017,37 @@ |
| 2006 | 2017 | </block> |
| 2007 | 2018 | <connection> |
| 2008 | 2019 | <source_block_id>analog_wfm_rcv_0</source_block_id> |
| 2009 | - <sink_block_id>rational_resampler_xxx_0</sink_block_id> | |
| 2020 | + <sink_block_id>qtgui_sink_x_1</sink_block_id> | |
| 2010 | 2021 | <source_key>0</source_key> |
| 2011 | 2022 | <sink_key>0</sink_key> |
| 2012 | 2023 | </connection> |
| 2013 | 2024 | <connection> |
| 2014 | - <source_block_id>low_pass_filter_0</source_block_id> | |
| 2015 | - <sink_block_id>analog_wfm_rcv_0</sink_block_id> | |
| 2025 | + <source_block_id>analog_wfm_rcv_0</source_block_id> | |
| 2026 | + <sink_block_id>rational_resampler_xxx_0</sink_block_id> | |
| 2016 | 2027 | <source_key>0</source_key> |
| 2017 | 2028 | <sink_key>0</sink_key> |
| 2018 | 2029 | </connection> |
| 2019 | 2030 | <connection> |
| 2020 | - <source_block_id>low_pass_filter_0</source_block_id> | |
| 2021 | - <sink_block_id>qtgui_sink_x_0_0</sink_block_id> | |
| 2031 | + <source_block_id>rational_resampler_xxx_0</source_block_id> | |
| 2032 | + <sink_block_id>audio_sink_0</sink_block_id> | |
| 2022 | 2033 | <source_key>0</source_key> |
| 2023 | 2034 | <sink_key>0</sink_key> |
| 2024 | 2035 | </connection> |
| 2025 | 2036 | <connection> |
| 2026 | - <source_block_id>rational_resampler_xxx_0</source_block_id> | |
| 2027 | - <sink_block_id>audio_sink_0</sink_block_id> | |
| 2037 | + <source_block_id>rational_resampler_xxx_0_0</source_block_id> | |
| 2038 | + <sink_block_id>analog_wfm_rcv_0</sink_block_id> | |
| 2028 | 2039 | <source_key>0</source_key> |
| 2029 | 2040 | <sink_key>0</sink_key> |
| 2030 | 2041 | </connection> |
| 2031 | 2042 | <connection> |
| 2032 | 2043 | <source_block_id>rtlsdr_source_0</source_block_id> |
| 2033 | - <sink_block_id>low_pass_filter_0</sink_block_id> | |
| 2044 | + <sink_block_id>qtgui_sink_x_0</sink_block_id> | |
| 2034 | 2045 | <source_key>0</source_key> |
| 2035 | 2046 | <sink_key>0</sink_key> |
| 2036 | 2047 | </connection> |
| 2037 | 2048 | <connection> |
| 2038 | 2049 | <source_block_id>rtlsdr_source_0</source_block_id> |
| 2039 | - <sink_block_id>qtgui_sink_x_0</sink_block_id> | |
| 2050 | + <sink_block_id>rational_resampler_xxx_0_0</sink_block_id> | |
| 2040 | 2051 | <source_key>0</source_key> |
| 2041 | 2052 | <sink_key>0</sink_key> |
| 2042 | 2053 | </connection> |
fm_radio/top_block.py
| 1 | +#!/usr/bin/env python2 | |
| 2 | +# -*- coding: utf-8 -*- | |
| 3 | +################################################## | |
| 4 | +# GNU Radio Python Flow Graph | |
| 5 | +# Title: Top Block | |
| 6 | +# Generated: Thu Mar 16 08:57:41 2017 | |
| 7 | +################################################## | |
| 8 | + | |
| 9 | +if __name__ == '__main__': | |
| 10 | + import ctypes | |
| 11 | + import sys | |
| 12 | + if sys.platform.startswith('linux'): | |
| 13 | + try: | |
| 14 | + x11 = ctypes.cdll.LoadLibrary('libX11.so') | |
| 15 | + x11.XInitThreads() | |
| 16 | + except: | |
| 17 | + print "Warning: failed to XInitThreads()" | |
| 18 | + | |
| 19 | +from PyQt4 import Qt | |
| 20 | +from gnuradio import analog | |
| 21 | +from gnuradio import audio | |
| 22 | +from gnuradio import eng_notation | |
| 23 | +from gnuradio import filter | |
| 24 | +from gnuradio import gr | |
| 25 | +from gnuradio import qtgui | |
| 26 | +from gnuradio.eng_option import eng_option | |
| 27 | +from gnuradio.filter import firdes | |
| 28 | +from gnuradio.qtgui import Range, RangeWidget | |
| 29 | +from optparse import OptionParser | |
| 30 | +import osmosdr | |
| 31 | +import sip | |
| 32 | +import sys | |
| 33 | +import time | |
| 34 | + | |
| 35 | + | |
| 36 | +class top_block(gr.top_block, Qt.QWidget): | |
| 37 | + | |
| 38 | + def __init__(self): | |
| 39 | + gr.top_block.__init__(self, "Top Block") | |
| 40 | + Qt.QWidget.__init__(self) | |
| 41 | + self.setWindowTitle("Top Block") | |
| 42 | + try: | |
| 43 | + self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) | |
| 44 | + except: | |
| 45 | + pass | |
| 46 | + self.top_scroll_layout = Qt.QVBoxLayout() | |
| 47 | + self.setLayout(self.top_scroll_layout) | |
| 48 | + self.top_scroll = Qt.QScrollArea() | |
| 49 | + self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) | |
| 50 | + self.top_scroll_layout.addWidget(self.top_scroll) | |
| 51 | + self.top_scroll.setWidgetResizable(True) | |
| 52 | + self.top_widget = Qt.QWidget() | |
| 53 | + self.top_scroll.setWidget(self.top_widget) | |
| 54 | + self.top_layout = Qt.QVBoxLayout(self.top_widget) | |
| 55 | + self.top_grid_layout = Qt.QGridLayout() | |
| 56 | + self.top_layout.addLayout(self.top_grid_layout) | |
| 57 | + | |
| 58 | + self.settings = Qt.QSettings("GNU Radio", "top_block") | |
| 59 | + self.restoreGeometry(self.settings.value("geometry").toByteArray()) | |
| 60 | + | |
| 61 | + ################################################## | |
| 62 | + # Variables | |
| 63 | + ################################################## | |
| 64 | + self.samp_rate = samp_rate = 48e3 | |
| 65 | + self.freq = freq = 98.7e6 | |
| 66 | + self.decim = decim = 4 | |
| 67 | + | |
| 68 | + ################################################## | |
| 69 | + # Blocks | |
| 70 | + ################################################## | |
| 71 | + self._freq_range = Range(55e6, 200e6, 0.1e6, 98.7e6, 200) | |
| 72 | + self._freq_win = RangeWidget(self._freq_range, self.set_freq, "freq", "counter_slider", float) | |
| 73 | + self.top_grid_layout.addWidget(self._freq_win, 0,0) | |
| 74 | + self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + '' ) | |
| 75 | + self.rtlsdr_source_0.set_sample_rate(samp_rate*10*4) | |
| 76 | + self.rtlsdr_source_0.set_center_freq(freq, 0) | |
| 77 | + self.rtlsdr_source_0.set_freq_corr(0, 0) | |
| 78 | + self.rtlsdr_source_0.set_dc_offset_mode(0, 0) | |
| 79 | + self.rtlsdr_source_0.set_iq_balance_mode(0, 0) | |
| 80 | + self.rtlsdr_source_0.set_gain_mode(False, 0) | |
| 81 | + self.rtlsdr_source_0.set_gain(20, 0) | |
| 82 | + self.rtlsdr_source_0.set_if_gain(20, 0) | |
| 83 | + self.rtlsdr_source_0.set_bb_gain(20, 0) | |
| 84 | + self.rtlsdr_source_0.set_antenna('', 0) | |
| 85 | + self.rtlsdr_source_0.set_bandwidth(0, 0) | |
| 86 | + | |
| 87 | + self.rational_resampler_xxx_0_0 = filter.rational_resampler_ccc( | |
| 88 | + interpolation=1, | |
| 89 | + decimation=4, | |
| 90 | + taps=None, | |
| 91 | + fractional_bw=None, | |
| 92 | + ) | |
| 93 | + self.rational_resampler_xxx_0 = filter.rational_resampler_fff( | |
| 94 | + interpolation=1, | |
| 95 | + decimation=10, | |
| 96 | + taps=None, | |
| 97 | + fractional_bw=None, | |
| 98 | + ) | |
| 99 | + self.qtgui_sink_x_1 = qtgui.sink_f( | |
| 100 | + 1024, #fftsize | |
| 101 | + firdes.WIN_BLACKMAN_hARRIS, #wintype | |
| 102 | + 0, #fc | |
| 103 | + samp_rate/decim, #bw | |
| 104 | + "", #name | |
| 105 | + True, #plotfreq | |
| 106 | + True, #plotwaterfall | |
| 107 | + True, #plottime | |
| 108 | + True, #plotconst | |
| 109 | + ) | |
| 110 | + self.qtgui_sink_x_1.set_update_time(1.0/10) | |
| 111 | + self._qtgui_sink_x_1_win = sip.wrapinstance(self.qtgui_sink_x_1.pyqwidget(), Qt.QWidget) | |
| 112 | + self.top_grid_layout.addWidget(self._qtgui_sink_x_1_win, 10,0) | |
| 113 | + | |
| 114 | + self.qtgui_sink_x_1.enable_rf_freq(False) | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + self.audio_sink_0 = audio.sink(int(samp_rate), '', True) | |
| 119 | + self.analog_wfm_rcv_0 = analog.wfm_rcv( | |
| 120 | + quad_rate=samp_rate*10, | |
| 121 | + audio_decimation=1, | |
| 122 | + ) | |
| 123 | + | |
| 124 | + ################################################## | |
| 125 | + # Connections | |
| 126 | + ################################################## | |
| 127 | + self.connect((self.analog_wfm_rcv_0, 0), (self.qtgui_sink_x_1, 0)) | |
| 128 | + self.connect((self.analog_wfm_rcv_0, 0), (self.rational_resampler_xxx_0, 0)) | |
| 129 | + self.connect((self.rational_resampler_xxx_0, 0), (self.audio_sink_0, 0)) | |
| 130 | + self.connect((self.rational_resampler_xxx_0_0, 0), (self.analog_wfm_rcv_0, 0)) | |
| 131 | + self.connect((self.rtlsdr_source_0, 0), (self.rational_resampler_xxx_0_0, 0)) | |
| 132 | + | |
| 133 | + def closeEvent(self, event): | |
| 134 | + self.settings = Qt.QSettings("GNU Radio", "top_block") | |
| 135 | + self.settings.setValue("geometry", self.saveGeometry()) | |
| 136 | + event.accept() | |
| 137 | + | |
| 138 | + def get_samp_rate(self): | |
| 139 | + return self.samp_rate | |
| 140 | + | |
| 141 | + def set_samp_rate(self, samp_rate): | |
| 142 | + self.samp_rate = samp_rate | |
| 143 | + self.rtlsdr_source_0.set_sample_rate(self.samp_rate*10*4) | |
| 144 | + self.qtgui_sink_x_1.set_frequency_range(0, self.samp_rate/self.decim) | |
| 145 | + | |
| 146 | + def get_freq(self): | |
| 147 | + return self.freq | |
| 148 | + | |
| 149 | + def set_freq(self, freq): | |
| 150 | + self.freq = freq | |
| 151 | + self.rtlsdr_source_0.set_center_freq(self.freq, 0) | |
| 152 | + | |
| 153 | + def get_decim(self): | |
| 154 | + return self.decim | |
| 155 | + | |
| 156 | + def set_decim(self, decim): | |
| 157 | + self.decim = decim | |
| 158 | + self.qtgui_sink_x_1.set_frequency_range(0, self.samp_rate/self.decim) | |
| 159 | + | |
| 160 | + | |
| 161 | +def main(top_block_cls=top_block, options=None): | |
| 162 | + | |
| 163 | + from distutils.version import StrictVersion | |
| 164 | + if StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0"): | |
| 165 | + style = gr.prefs().get_string('qtgui', 'style', 'raster') | |
| 166 | + Qt.QApplication.setGraphicsSystem(style) | |
| 167 | + qapp = Qt.QApplication(sys.argv) | |
| 168 | + | |
| 169 | + tb = top_block_cls() | |
| 170 | + tb.start() | |
| 171 | + tb.show() | |
| 172 | + | |
| 173 | + def quitting(): | |
| 174 | + tb.stop() | |
| 175 | + tb.wait() | |
| 176 | + qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting) | |
| 177 | + qapp.exec_() | |
| 178 | + | |
| 179 | + | |
| 180 | +if __name__ == '__main__': | |
| 181 | + main() |