време на започване на записване в 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