【问题标题】:Creating a buffer using an 'embedded python block'使用 \'embedded python block\' 创建缓冲区
【发布时间】:2022-08-23 01:55:01
【问题描述】:

我试图在 GNU Radio 中创建一个程序,它将信号中的数据存储到 Filesink 中。但是,通过这样做,文件接收器中的大部分数据将包含噪声。我的目标是只存储主信号和同一信号前后的一点点噪声。

为了实现这一点,我尝试使用“嵌入式 python 块”构建一个缓冲区,该缓冲区将仅存储主信号,并且如上所述,该信号之前和之后的一点噪声(存储的大小噪声由缓冲区的大小决定)。

为此,我创建了这个 GNU Radio 程序GNU Radio Program,最后我将文件接收器连接到静噪块,并将文件接收器连接到缓冲区块,以便我可以使用频谱分析仪比较两个文件接收器。

(注意:我使用发射器和 arduino 发出信号。arduino 被编程为每秒发送一条“Hello World”消息。然后我使用 SDR-Pluto 捕获该信号/消息)。

主要问题是,在我运行程序后,无论我让程序运行多长时间,静噪文件接收器都只有 64KB。另一方面,随着时间的推移,缓冲区文件接收器将存储数据,但是,当我在频谱分析仪上检查缓冲区文件接收器时,频谱是空的。

如果有人可以帮助我了解问题所在,我将不胜感激。 这是我的缓冲区代码:

import numpy as np
from gnuradio import gr


class blk(gr.basic_block):  # other base classes are basic_block, decim_block, interp_block

    def __init__(self, buffer_size_param=10000.0):  # only default arguments here
        \"\"\"arguments to this function show up as parameters in GRC\"\"\"
        gr.basic_block.__init__(
            self,
            name=\'Embedded Python Block (Buffer)\',  # will show up in GRC
            in_sig=[np.complex64, np.complex64],
            out_sig=[np.complex64]
        )
        
        self.buffer = [] 
        self.buffer_size_param = buffer_size_param
        self.counter = self.buffer_size_param
 
    def general_work(self, input_items, output_items):
        squelch = input_items[0]
        throttle = input_items[1]
        
        for i in range(len(squelch)):       
            
            if (squelch [i] == 0):
                self.counter = self.counter + 1
                if (self.counter <= buffer_size_param):
                    output_items.append(throttle[i])
                else:
                    self.buffer.append(throttle [i])
                    
                    if len (self.buffer) > buffer_size_param:
                            self.buffer.pop (0)
                            
            else:
        
                output_items = output_items + self.buffer
                output_items.append(throttle[i])
                
                self.buffer = []
                self.counter = 0
        
        return len(output_items)

    标签: python gnuradio gnuradio-companion


    【解决方案1】:

    如果您按比率对信号进行排序怎么办?你能分割每一个追踪它的原始来源吗?取决于发射信号的设备,取决于它推动了多少 mghz。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      相关资源
      最近更新 更多