#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # SPDX-License-Identifier: GPL-3.0 # # GNU Radio Python Flow Graph # Title: data_saver # GNU Radio version: 3.10.12.0 from PyQt5 import Qt from gnuradio import qtgui import data_saver_epy_block_0 as epy_block_0 # embedded python block import osmosdr import time import sip import threading from gnuradio import gr from gnuradio.filter import firdes from gnuradio.fft import window import sys import signal from argparse import ArgumentParser from gnuradio.eng_arg import eng_float, intx from gnuradio import eng_notation class data_saver(gr.top_block, Qt.QWidget): def __init__(self): gr.top_block.__init__(self, "data_saver", catch_exceptions=True) Qt.QWidget.__init__(self) self.setWindowTitle("data_saver") qtgui.util.check_set_qss() try: self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) except BaseException as exc: print(f"Qt GUI: Could not set Icon: {str(exc)}", file=sys.stderr) self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) self.settings = Qt.QSettings("gnuradio/flowgraphs", "data_saver") try: geometry = self.settings.value("geometry") if geometry: self.restoreGeometry(geometry) except BaseException as exc: print(f"Qt GUI: Could not restore geometry: {str(exc)}", file=sys.stderr) self.flowgraph_started = threading.Event() ################################################## # Variables ################################################## self.samp_rate = samp_rate = 20e6 self.freq = freq = 1.160e9 ################################################## # Blocks ################################################## self.qtgui_waterfall_sink_x_0 = qtgui.waterfall_sink_c( 32768, #size window.WIN_HAMMING, #wintype freq, #fc samp_rate, #bw "", #name 1, #number of inputs None # parent ) self.qtgui_waterfall_sink_x_0.set_update_time(0.10) self.qtgui_waterfall_sink_x_0.enable_grid(False) self.qtgui_waterfall_sink_x_0.enable_axis_labels(True) labels = ['', '', '', '', '', '', '', '', '', ''] colors = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in range(1): if len(labels[i]) == 0: self.qtgui_waterfall_sink_x_0.set_line_label(i, "Data {0}".format(i)) else: self.qtgui_waterfall_sink_x_0.set_line_label(i, labels[i]) self.qtgui_waterfall_sink_x_0.set_color_map(i, colors[i]) self.qtgui_waterfall_sink_x_0.set_line_alpha(i, alphas[i]) self.qtgui_waterfall_sink_x_0.set_intensity_range(-140, 10) self._qtgui_waterfall_sink_x_0_win = sip.wrapinstance(self.qtgui_waterfall_sink_x_0.qwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_waterfall_sink_x_0_win) self.qtgui_time_sink_x_0_1 = qtgui.time_sink_c( 1000000, #size samp_rate, #samp_rate "", #name 1, #number of inputs None # parent ) self.qtgui_time_sink_x_0_1.set_update_time(0.01) self.qtgui_time_sink_x_0_1.set_y_axis(-2, 2) self.qtgui_time_sink_x_0_1.set_y_label('Amplitude', "") self.qtgui_time_sink_x_0_1.enable_tags(True) self.qtgui_time_sink_x_0_1.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") self.qtgui_time_sink_x_0_1.enable_autoscale(False) self.qtgui_time_sink_x_0_1.enable_grid(False) self.qtgui_time_sink_x_0_1.enable_axis_labels(True) self.qtgui_time_sink_x_0_1.enable_control_panel(False) self.qtgui_time_sink_x_0_1.enable_stem_plot(False) labels = ['', '', '', '', '', '', '', '', '', ''] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = ['blue', 'red', 'green', 'black', 'cyan', 'magenta', 'yellow', 'dark red', 'dark green', 'dark blue'] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] styles = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] markers = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1] for i in range(2): if len(labels[i]) == 0: if (i % 2 == 0): self.qtgui_time_sink_x_0_1.set_line_label(i, "Re{{Data {0}}}".format(i/2)) else: self.qtgui_time_sink_x_0_1.set_line_label(i, "Im{{Data {0}}}".format(i/2)) else: self.qtgui_time_sink_x_0_1.set_line_label(i, labels[i]) self.qtgui_time_sink_x_0_1.set_line_width(i, widths[i]) self.qtgui_time_sink_x_0_1.set_line_color(i, colors[i]) self.qtgui_time_sink_x_0_1.set_line_style(i, styles[i]) self.qtgui_time_sink_x_0_1.set_line_marker(i, markers[i]) self.qtgui_time_sink_x_0_1.set_line_alpha(i, alphas[i]) self._qtgui_time_sink_x_0_1_win = sip.wrapinstance(self.qtgui_time_sink_x_0_1.qwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_time_sink_x_0_1_win) self.hack_serial=input() self.osmosdr_source_1 = osmosdr.source( args="numchan=" + str(1) + " " + 'hackrf='+self.hack_serial ) self.osmosdr_source_1.set_time_unknown_pps(osmosdr.time_spec_t()) self.osmosdr_source_1.set_sample_rate(samp_rate) self.osmosdr_source_1.set_center_freq(freq, 0) self.osmosdr_source_1.set_freq_corr(0, 0) self.osmosdr_source_1.set_dc_offset_mode(0, 0) self.osmosdr_source_1.set_iq_balance_mode(0, 0) self.osmosdr_source_1.set_gain_mode(False, 0) self.osmosdr_source_1.set_gain(12, 0) self.osmosdr_source_1.set_if_gain(30, 0) self.osmosdr_source_1.set_bb_gain(36, 0) self.osmosdr_source_1.set_antenna('', 0) self.osmosdr_source_1.set_bandwidth(0, 0) self.epy_block_0 = epy_block_0.Simsi_Sink(SaveDir='home/sibscience-4/Dataset/1160', FileTag='DJI_3', SplitSize=400000, Delay=0.1) ################################################## # Connections ################################################## self.connect((self.osmosdr_source_1, 0), (self.epy_block_0, 0)) self.connect((self.osmosdr_source_1, 0), (self.qtgui_time_sink_x_0_1, 0)) self.connect((self.osmosdr_source_1, 0), (self.qtgui_waterfall_sink_x_0, 0)) def closeEvent(self, event): self.settings = Qt.QSettings("gnuradio/flowgraphs", "data_saver") self.settings.setValue("geometry", self.saveGeometry()) self.stop() self.wait() event.accept() def get_samp_rate(self): return self.samp_rate def set_samp_rate(self, samp_rate): self.samp_rate = samp_rate self.osmosdr_source_1.set_sample_rate(self.samp_rate) self.qtgui_time_sink_x_0_1.set_samp_rate(self.samp_rate) self.qtgui_waterfall_sink_x_0.set_frequency_range(self.freq, self.samp_rate) def get_freq(self): return self.freq def set_freq(self, freq): self.freq = freq self.osmosdr_source_1.set_center_freq(self.freq, 0) self.qtgui_waterfall_sink_x_0.set_frequency_range(self.freq, self.samp_rate) def main(top_block_cls=data_saver, options=None): qapp = Qt.QApplication(sys.argv) tb = top_block_cls() tb.start() tb.flowgraph_started.set() tb.show() def sig_handler(sig=None, frame=None): tb.stop() tb.wait() Qt.QApplication.quit() signal.signal(signal.SIGINT, sig_handler) signal.signal(signal.SIGTERM, sig_handler) timer = Qt.QTimer() timer.start(500) timer.timeout.connect(lambda: None) qapp.exec_() if __name__ == '__main__': main()