2017-07-31 1 views
-1

Tous les soirs,Quitter automatiquement le fichier python après une période de temps

Je travaille sur un projet de réalisation d'une forme de radio cognitive.

Je ne crois pas que ce soit vraiment une question GNURadio, plutôt une question python.

J'ai jusqu'à présent réussi un balayage de spectre et peut définir une variable locale basée sur ceci pour le canal optimal. De plus, j'ai été capable de transmettre cette fréquence (en utilisant un fichier) au récepteur pour une reconfiguration over the air (OTAR). Ce que je suis aux prises maintenant, et j'espère que c'est une solution simple, Une fois que j'ai envoyé le fichier pour l'OTAR, je souhaite que le fichier python généré par GNURadio se ferme automatiquement après un certain temps, disons 30 secondes. Cela devrait déclencher la règle de quitter, dans ce cas, c'est la commande pour ouvrir mon deuxième fichier de transmission qui enverra le fichier de données.

Existe-t-il un moyen simple de quitter automatiquement le fichier GNURadio après une période donnée?

#!/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() 
+1

Veuillez voir comment créer un exemple [Exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve). – gobrewers14

Répondre

0

Vous pouvez utiliser le module python sys ...

Pour terminer un script python, vous pouvez appeler sys.exit(). Je pense que c'est ce que vous voulez ... Et vous pouvez utiliser le module python time pour créer une minuterie. Je peux vous laisser savoir comment faire cela ou je peux écrire un script qui irait dans une boucle pour vérifier si le temps est passé si vous préférez.

J'espère que cela a aidé!