-1
晚報畢竟Python文件的自動退出,一段時間
我工作的一個項目,以實現某種形式的認知無線電的。
我不認爲這是一個真正的GNURadio問題,而是一個python問題。
到目前爲止,我已經成功啓用了頻譜掃描,並可以基於此設置一個局部變量以獲得最佳信道。另外,我已經能夠將該頻率(使用文件)發送到接收器以進行空中重新配置(OTAR)。
我現在在苦苦掙扎,希望它是一個簡單的解決方案,一旦我發送了OTAR文件,我希望GNURadio生成的python文件能夠在一段時間後自動關閉,比如30秒。這應該會觸發退出規則,在這裏是打開我的第二個傳輸文件的命令,它將發送數據文件。
是否有一種簡單的方法讓GNURadio文件在給定時間段後自動退出?
#!/usr/bin/env python2
#
-*- coding: utf-8 -*-
##################################################
#GNU Radio Python Flow Graph
# Title: Gmsk Tx
# Generated: Mon Jul 31 16:38:52 2017
#Edited for Project (import os and os.system("python ./Basic_SigGen.py") in def quitting():
#################################################
if __name__ == '__main__':
import ctypes
import sys
if sys.platform.startswith('linux'):
try:
x11 = ctypes.cdll.LoadLibrary('libX11.so')
x11.XInitThreads()
except:
print "Warning:failed to XInitThreads()"
from PyQt4 import Qt
from gnuradio import blocks
from gnuradio import digital
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio import uhd
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from grc_gnuradio import blks2 as grc_blks2
from optparse import OptionParser
import sys
import time
import os
class GMSK_TX(gr.top_block, Qt.QWidget):
def __init__(self):
gr.top_block.__init__(self, "Gmsk Tx")
Qt.QWidget.__init__(self)
self.setWindowTitle("Gmsk Tx")
try:
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
except:
pass
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", "GMSK_TX")
self.restoreGeometry(self.settings.value("geometry").toByteArray())
##################################################
# Variables
##################################################
self.samp_rate = samp_rate = 1e6
self.freq = freq = 2e9
self.code1 = code1 = '010110011011101100010101011111101001001110001011010001101010001'
##################################################
# Blocks
##################################################
self.uhd_usrp_sink_0_0 = uhd.usrp_sink(
",".join(("", "")),
uhd.stream_args(
cpu_format="fc32",
channels=range(1),
),
)
self.uhd_usrp_sink_0_0.set_samp_rate(samp_rate)
self.uhd_usrp_sink_0_0.set_center_freq(freq, 0)
self.uhd_usrp_sink_0_0.set_gain(30, 0)
self.uhd_usrp_sink_0_0.set_antenna('TX/RX', 0)
self.digital_gmsk_mod_0 = digital.gmsk_mod(
samples_per_symbol=2,
bt=0.35,
verbose=False,
log=False,
)
self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((1,))
self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char*1, '/root/optimum_freq.csv', False)
self.blks2_packet_encoder_0 = grc_blks2.packet_mod_b(grc_blks2.packet_encoder(
samples_per_symbol=2,
bits_per_symbol=1,
preamble='',
access_code=code1,
pad_for_usrp=True,
),
payload_length=1,
)
##################################################
# Connections
##################################################
self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0))
self.connect((self.blocks_file_source_0, 0), (self.blks2_packet_encoder_0, 0))
self.connect((self.blocks_multiply_const_vxx_0, 0), (self.uhd_usrp_sink_0_0, 0))
self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_multiply_const_vxx_0, 0))
def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "GMSK_TX")
self.settings.setValue("geometry", self.saveGeometry())
event.accept()
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.uhd_usrp_sink_0_0.set_samp_rate(self.samp_rate)
def get_freq(self):
return self.freq
def set_freq(self, freq):
self.freq = freq
self.uhd_usrp_sink_0_0.set_center_freq(self.freq, 0)
def get_code1(self):
return self.code1
def set_code1(self, code1):
self.code1 = code1
def main(top_block_cls=GMSK_TX, options=None):
from distutils.version import StrictVersion
if StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0"):
style = gr.prefs().get_string('qtgui', 'style', 'raster')
Qt.QApplication.setGraphicsSystem(style)
qapp = Qt.QApplication(sys.argv)
tb = top_block_cls()
tb.start()
tb.show()
def quitting():
tb.stop()
tb.wait()
os.system("python ./Basic_SigGen.py")
qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting)
qapp.exec_()
if __name__ == '__main__':
main()
請參閱如何創建[最小,完整和可驗證示例](https://stackoverflow.com/help/mcve)示例。 – gobrewers14