2015-05-11 3 views
1

Мне нужна помощь относительно скрипта pnon gnuradio.время начала сохранения в двоичном файле rx в скрипте python?

Я передаю и получаю в usrp через двоичный файл. Возможно ли узнать время, когда скрипт python начнет сохранять данные в двоичном файле (print (rx_stream_time) - что-то вроде этого) и сколько образцов сохраняется в двоичном файле (может быть со счетчиком)?

Я прилагаю свой код, созданный grc flowgraph. floatgen - это имя файла файла, а check6.bin - имя файла rx.

class top_block_10(grc_wxgui.top_block_gui): 
    def __init__(self): 
    grc_wxgui.top_block_gui.__init__(self, title="Top Block 10") 
    _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" 
    self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) 

    ################################################## 
    # Variables 
    ################################################## 
    self.samp_rate = samp_rate = 12.5e6 
    self.f = f = 2.45e9 

    ################################################## 
    # Blocks 
    ################################################## 
    self.uhd_usrp_source_0 = uhd.usrp_source(
     ",".join(("addr=172.22.77.73", "")), 
     uhd.stream_args(
      cpu_format="fc32", 
      channels=range(1), 
     ), 
    ) 
    self.uhd_usrp_source_0.set_clock_source("gpsdo", 0) 
    self.uhd_usrp_source_0.set_time_source("gpsdo", 0) 
    self.uhd_usrp_source_0.set_subdev_spec("A:0", 0) 
    self.uhd_usrp_source_0.set_time_unknown_pps(uhd.time_spec()) 
    self.uhd_usrp_source_0.set_samp_rate(samp_rate) 
    self.uhd_usrp_source_0.set_center_freq(f, 0) 
    self.uhd_usrp_source_0.set_gain(27, 0) 
    self.uhd_usrp_source_0.set_antenna("RX2", 0) 
    self.uhd_usrp_sink_0 = uhd.usrp_sink(
     ",".join(("addr=172.22.77.73", "")), 
     uhd.stream_args(
      cpu_format="fc32", 
      channels=range(1), 
     ), 
    ) 
    self.uhd_usrp_sink_0.set_clock_source("gpsdo", 0) 
    self.uhd_usrp_sink_0.set_time_source("gpsdo", 0) 
    self.uhd_usrp_sink_0.set_subdev_spec("A:0", 0) 
    self.uhd_usrp_sink_0.set_time_unknown_pps(uhd.time_spec()) 
    self.uhd_usrp_sink_0.set_samp_rate(samp_rate) 
    self.uhd_usrp_sink_0.set_center_freq(2.45e9, 0) 
    self.uhd_usrp_sink_0.set_gain(0, 0) 
    self.uhd_usrp_sink_0.set_antenna("TX/RX", 0) 
    self.blocks_throttle_3 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate*2,True) 
    self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate*2,True) 
    self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, "/home/sanjoy/Desktop/SISO gen file/floatgen.bin", True) 
    self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex*1, "/home/sanjoy/check6.bin", False) 
    self.blocks_file_sink_0.set_unbuffered(False) 

TIA и, пожалуйста, дайте мне знать, как это сделать.

наилучшими пожеланиями

Санджой

ответ

1

USRP посылает rx_time тег, когда RX начинается или когда происходит переполнение. Чтобы получить этот тег, вы можете использовать блок Tag Debug, который печатает тег потока. Однако для лучшей обработки я бы предложил блок Tagged Stream to PDU, который преобразует тег потока в сообщение. Затем сообщение можно использовать с различными другими блоками, чтобы получить нужную вам информацию.

Для второй части вашего вопроса. Если вы точно знаете размер файла, вы можете легко найти количество выборок, разделив размер файла на размер каждого образца.

Например: Файл с размером gr_complex образцов размером 2048 байт содержит 2048/sizeof(gr_complex) = 2048/8 = 256 образцов.

Смежные вопросы