0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pythonでgnuradio その24

Posted at

概要

pythonでgnuradioやってみた。
練習問題やってみた。

練習問題

dialとcompassを使え。

写真

image.png

サンプルコード


from PyQt5 import Qt
from gnuradio import qtgui
from gnuradio import blocks
from gnuradio import gr
from gnuradio.filter import firdes
from gnuradio.fft import window
import sys
import signal
from gnuradio.eng_arg import eng_float, intx
from gnuradio import eng_notation

class ui1(gr.top_block, Qt.QWidget):
	def __init__(self):
		gr.top_block.__init__(self, "Not titled yet", catch_exceptions = True)
		Qt.QWidget.__init__(self)
		self.setWindowTitle("Not titled yet")
		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("GNU Radio", "ui1")
		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.variable_qtgui_dial_control_0 = variable_qtgui_dial_control_0 = 0
		self.samp_rate = samp_rate = 32000
		if "int" == "int":
			isFloat = False
			scaleFactor = 1
		else:
			isFloat = True
			scaleFactor = 1
		_variable_qtgui_dial_control_0_dial_control = qtgui.GrDialControl('angle', self, 0, 360, 0, "default", self.set_variable_qtgui_dial_control_0, isFloat, scaleFactor, 100, True, "'value'")
		self.variable_qtgui_dial_control_0 = _variable_qtgui_dial_control_0_dial_control
		self.top_layout.addWidget(_variable_qtgui_dial_control_0_dial_control)
		self.qtgui_compass_0 = self._qtgui_compass_0_win = qtgui.GrCompass('', 250, 0.10, False, 1, True, 1, "default")
		self._qtgui_compass_0_win.setColors("default","red", "black", "black")
		self._qtgui_compass_0 = self._qtgui_compass_0_win
		self.top_layout.addWidget(self._qtgui_compass_0_win)
		self.blocks_throttle2_0 = blocks.throttle(gr.sizeof_gr_complex * 1, samp_rate, True, 0 if "auto" == "auto" else max(int(float(0.1) * samp_rate) if "auto" == "time" else int(0.1), 1) )
		self.blocks_null_source_0 = blocks.null_source(gr.sizeof_gr_complex * 1)
		self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_gr_complex * 1)
		self.msg_connect((self.variable_qtgui_dial_control_0, 'value'), (self.qtgui_compass_0, 'angle'))
		self.connect((self.blocks_null_source_0, 0), (self.blocks_throttle2_0, 0))
		self.connect((self.blocks_throttle2_0, 0), (self.blocks_null_sink_0, 0))
	def closeEvent(self, event):
		self.settings = Qt.QSettings("GNU Radio", "ui1")
		self.settings.setValue("geometry", self.saveGeometry())
		self.stop()
		self.wait()
		event.accept()
	def get_variable_qtgui_dial_control_0(self):
		return self.variable_qtgui_dial_control_0
	def set_variable_qtgui_dial_control_0(self, variable_qtgui_dial_control_0):
		self.variable_qtgui_dial_control_0 = variable_qtgui_dial_control_0
	def get_samp_rate(self):
		return self.samp_rate
	def set_samp_rate(self, samp_rate):
		self.samp_rate = samp_rate
		self.blocks_throttle2_0.set_sample_rate(self.samp_rate)

def main(top_block_cls = ui1, options = None):
	qapp = Qt.QApplication(sys.argv)
	tb = top_block_cls()
	tb.start()
	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()





以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?