время начала сохранения в двоичном файле rx в скрипте python?

Мне нужна помощь в отношении скрипта gnuradio 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, и, пожалуйста, дайте мне знать, как это сделать.

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

Санджой


person Sanjoy Basak    schedule 11.05.2015    source источник


Ответы (1)


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

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

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

person Manos    schedule 12.05.2015