You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于GNU Radio中gr-inspector的CSV数据保存及端口适配问题咨询

解决gr-inspector map_out端口数据保存为CSV的问题

核心数据类型说明

gr-inspector的map_out端口输出的是pmt::map类型(GNU Radio的多态键值对结构),这类数据通过消息流传递,不是普通采样数据流,所以Python块不能用普通流输入,得用消息端口接收。

Python块配置与代码实现

  1. GRC里的Python块配置

    • 添加Python块后,在端口设置里把输入类型改成Message(不要选Stream),端口名可设为in。
    • 在块的属性里,将Callback设为处理消息的函数名,比如handle_pmt_map。
  2. Python代码实现
    以下是可直接使用的示例代码,负责解析pmt map并写入CSV:

    import numpy as np
    import pmt
    import csv
    from gnuradio import gr
    
    class pmt_to_csv(gr.sync_block):
        def __init__(self, csv_filename="signal_data.csv"):
            gr.sync_block.__init__(
                self,
                name="PMT to CSV",
                in_sig=None,  # 用消息端口,流输入设为None
                out_sig=None
            )
            # 注册消息输入端口
            self.message_port_register_in(pmt.intern("in"))
            self.set_msg_handler(pmt.intern("in"), self.handle_pmt_map)
            
            # 初始化CSV文件并写入表头
            self.csv_file = open(csv_filename, 'a', newline='')
            self.writer = csv.writer(self.csv_file)
            # 表头根据gr-inspector实际输出的键调整,以下是常见字段
            self.writer.writerow(["center_freq", "bandwidth", "snr", "signal_type"])
    
        def handle_pmt_map(self, msg):
            # 将pmt消息转换为Python字典
            pmt_map = pmt.to_python(msg)
            if isinstance(pmt_map, dict):
                # 提取目标字段,可根据实际输出调整
                data_row = [
                    pmt_map.get("center_freq", ""),
                    pmt_map.get("bandwidth", ""),
                    pmt_map.get("snr", ""),
                    pmt_map.get("signal_type", "")
                ]
                self.writer.writerow(data_row)
                # 强制刷新缓冲区,避免数据丢失
                self.csv_file.flush()
    
        def stop(self):
            # 程序停止时关闭文件
            self.csv_file.close()
            return True
    

注意事项

  • 若不清楚gr-inspector输出的pmt map包含哪些键,可在handle_pmt_map函数中添加print(pmt_map),运行后查看终端输出的键值对,再调整CSV表头和提取字段。
  • 确保CSV文件路径有写入权限,避免报错。
  • 测试时可先运行短流程,检查CSV文件是否正确生成数据。

内容的提问来源于stack exchange,提问作者Carmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 02:12:42