1

我需要有关 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,请让我知道该怎么做。

此致

桑乔伊

4

1 回答 1

1

rx_time当 RX 启动或发生溢出时,USRP 发送一个标签。要获取此标签,您可以使用Tag Debug打印流标签的块。但是,为了更好地处理,我建议Tagged Stream to PDU将流的标签转换为消息的块。然后该消息可以与其他各种块一起使用以获取您想要的信息。

对于你问题的第二部分。如果您确切知道文件大小,您可以通过将文件大小除以每个样本的大小轻松找到样本数。

例如:gr_complex样本大小为 2048 字节的文件包含2048/sizeof(gr_complex) = 2048/8 = 256样本。

于 2015-05-12T20:32:58.833 回答