| #!/usr/bin/python |
| import ctypes |
| from distutils.version import StrictVersion |
| import os |
| import sys |
| import time |
| |
| from gnuradio import gr |
| from PyQt4 import Qt |
| |
| # Import modules from gnuradio-companion generated files. |
| from bandpass_recorder_file import bandpass_recorder_file |
| from bandpass_recorder_gui import bandpass_recorder_gui |
| |
| |
| if __name__ == '__main__': |
| # Checks if libX11 works properly. |
| if sys.platform.startswith('linux'): |
| try: |
| x11 = ctypes.cdll.LoadLibrary('libX11.so') |
| x11.XInitThreads() |
| except: |
| print 'Warning: failed to XInitThreads()' |
| |
| # Check and parse arguments. |
| if len(sys.argv) != 2: |
| print 'usage: ./bandpass_recorder_final.py filename\n' |
| sys.exit(1) |
| if StrictVersion(Qt.qVersion()) >= StrictVersion('4.5.0'): |
| Qt.QApplication.setGraphicsSystem(gr.prefs().get_string('qtgui', 'style', 'raster')) |
| qapp = Qt.QApplication(sys.argv) |
| |
| # Start the GUI |
| gui_block = bandpass_recorder_gui() |
| gui_block.start() |
| gui_block.show() |
| |
| # Define callback behaviour for the gui_block: starts the file_block and begins |
| # recording once the gui_block is closed. |
| def begin_recording(): |
| # Retrieve parameters |
| gain = gui_block.get_gain() |
| freq = gui_block.get_freq() |
| width = gui_block.get_width() |
| record_time = gui_block.get_record_time() / 1000.0 |
| |
| # Stop the gui |
| gui_block.stop() |
| gui_block.wait() |
| |
| # Start the file recorder |
| file_block = bandpass_recorder_file() |
| print 'recording... ({0} seconds)\n'.format(record_time) |
| |
| # Set parameters |
| file_block.set_gain(gain) |
| file_block.set_freq(freq) |
| file_block.set_width(width) |
| |
| file_block.start() |
| # Run the recording for the specified time. |
| time.sleep(record_time) |
| |
| file_block.stop() |
| file_block.wait() |
| |
| # Rename output file |
| try: |
| os.rename('recorder.out', sys.argv[1]) |
| except OSError as e: |
| print '\nOSError [{0}]: {1}'.format(e.errno, e.strerror) |
| print 'Recording stored in \'recorder.out\'\n' |
| qapp.connect(qapp, Qt.SIGNAL('aboutToQuit()'), begin_recording) |
| qapp.exec_() |