Gnuradio 软件源代码块
Gnuradio software source block
我目前正在尝试进行一些实时信号处理,我想使用 "gnuradio"。我将在 python 中处理通过自定义界面(即 "Lab Streaming Layer";LSL)进入的多个 EEG 通道。
现在我的问题是,是否已经有一个现有的块,您可以在 运行 时间内将 "push" 样本放入信号处理图中?到目前为止我发现的唯一块提供对音频硬件、TCP 流和文件的支持。
您将不得不编写自己的块;这可以在 Python 或 C++ 中完成,无论哪种更适合您的情况。
GNU Radio Guided Tutorials(您至少应该真正按照从 1 到 5 的顺序阅读它们)解释了如何做到这一点。
因为我们都知道人们懒惰阅读,下面是您将学到的内容的粗略预览:
- 新建一个Out-of-tree模块:
gr_modtool newmod sensorinterface
,进入新生成的目录:cd gr-sensorinterface
- 添加一个新的源块:
gr_modtool add eeg_sensor_source
;您需要的块类型是 "source";系统会要求您填写一些区块详细信息。
- 编辑生成的源文件(在
lib/
或 python/
中,具体取决于您选择的语言:
- 添加适当的 io 签名:您的输出可能具有
float
的大小
- 编辑中央
work
函数;添加代码以获取新样本,并将其复制到 output_items
缓冲区。
指导教程真不错!
最灵活的方法是编写您自己的 GNU Radio 块,但有多种选项可以在不使用任何自定义块的情况下将数据导入流程图。 (从Python的角度命名。)
gnuradio.blocks.message_source
,从 gnuradio.gr.msg_queue
.
获取数据
您可以使用 gnuradio.blocks.file_descriptor_source
,其中文件描述符是管道的一端。
我目前正在尝试进行一些实时信号处理,我想使用 "gnuradio"。我将在 python 中处理通过自定义界面(即 "Lab Streaming Layer";LSL)进入的多个 EEG 通道。 现在我的问题是,是否已经有一个现有的块,您可以在 运行 时间内将 "push" 样本放入信号处理图中?到目前为止我发现的唯一块提供对音频硬件、TCP 流和文件的支持。
您将不得不编写自己的块;这可以在 Python 或 C++ 中完成,无论哪种更适合您的情况。
GNU Radio Guided Tutorials(您至少应该真正按照从 1 到 5 的顺序阅读它们)解释了如何做到这一点。
因为我们都知道人们懒惰阅读,下面是您将学到的内容的粗略预览:
- 新建一个Out-of-tree模块:
gr_modtool newmod sensorinterface
,进入新生成的目录:cd gr-sensorinterface
- 添加一个新的源块:
gr_modtool add eeg_sensor_source
;您需要的块类型是 "source";系统会要求您填写一些区块详细信息。 - 编辑生成的源文件(在
lib/
或python/
中,具体取决于您选择的语言:- 添加适当的 io 签名:您的输出可能具有
float
的大小
- 编辑中央
work
函数;添加代码以获取新样本,并将其复制到output_items
缓冲区。
- 添加适当的 io 签名:您的输出可能具有
指导教程真不错!
最灵活的方法是编写您自己的 GNU Radio 块,但有多种选项可以在不使用任何自定义块的情况下将数据导入流程图。 (从Python的角度命名。)
gnuradio.blocks.message_source
,从gnuradio.gr.msg_queue
. 获取数据
您可以使用
gnuradio.blocks.file_descriptor_source
,其中文件描述符是管道的一端。