在PyCharm中,我添加了Python环境/usr/bin/python.然而,
from gnuradio import gr
Run Code Online (Sandbox Code Playgroud)
作为未定义的引用失败.但是,它在命令行的Python解释器中工作正常.
GNURadio可以在Pycharm之外的python中正常工作.一切都安装和配置我想要的.
Gnuradio位于 /usr/local/lib/python2.7/site-packages/gnuradio
也:
PYTHONPATH =在/ usr/local/lib目录/ python2.7/site-packages中:/usr/local/lib/python2.7/site-packages/gnuradio
更新好吧,看起来在调用PyGILState_Ensure()之前添加PyEval_InitThreads()就可以了.在我急于解决问题时,我错误地将我的"挂起"归因于PyEval_InitThreads().
但是,在阅读了一些Python文档后,我想知道这是否是正确的解决方案.
当未知哪个线程(如果有)当前具有全局解释器锁时,调用此函数是不安全的.
首先,我正在研究一些经过修改的GNU Radio代码 - 特别是修改过的gr_bin_statistics_f块.现在,有一个错误报告(虽然是一个旧报告)几乎描述了我的确切情况.
http://gnuradio.org/redmine/issues/show/199
现在,bug报告中提到的usrp_spectrum_sense.py调用gr_bin_statistics_f(C++),然后定期回调Python以重新调整USRP(无线电).
以下是调用Python代码时发生的情况:
PyGILState_STATE d_gstate;
d_gstate = PyGILState_Ensure();
// call python code
PyGILState_Release(d_gstate);
Run Code Online (Sandbox Code Playgroud)
因此,一旦我们从Python代码返回,当调用PyGILState_Release(d_gstate)时就会发生分段错误.虽然我的代码和原始的gr_bin_statistics_f之间存在差异,但似乎没有任何东西与此远程相关.
我读到在PyGILState_Ensure()之前调用PyEval_InitThreads()已经解决了一些人的问题,但它只是导致我的程序挂起.
任何人都可以为我阐明这一点吗?或者只是时候发送消息到GNU Radio邮件列表?
在Fedora 14 x86_64上使用Python2.7.
这是GDB的回溯:
(gdb) c
Continuing.
[New Thread 0x7fabd3a8d700 (LWP 23969)]
[New Thread 0x7fabd328c700 (LWP 23970)]
[New Thread 0x7fabd2a8b700 (LWP 23971)]
[New Thread 0x7fabd228a700 (LWP 23972)]
[New Thread 0x7fabd1a89700 (LWP 23973)]
[New Thread 0x7fabd1288700 (LWP 23974)]
[New Thread 0x7fabd0a87700 (LWP 23975)]
[New Thread 0x7fabbbfff700 (LWP 23976)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to …Run Code Online (Sandbox Code Playgroud) 我正在和Gnuradio同伴一起工作,这是第一次有很多街区的大项目.工作台上的空间越来越稀缺.
你知道是否可以增加工作台的尺寸?
我正在尝试使用GNU Radio Companion解调信号.信号为FSK,标记和空间频率分别为1200和2200 Hz.
信号文本数据中的数据由名为GeoStamp Audio的设备生成.该设备实时生成送入其中的GPS数据的音频,并且还可以解码该音频.我有音频的解码文本版本供参考.
我在GNU Radio中设置了一个流程图(见下文),它运行时没有错误,但是我尝试过的所有变化,我仍然无法获取数据.所以我有几个问题:
1)流程图的输出应该是二进制(1s和0s),我以后可以转换为普通文本,对吧?
2)以我的方式输入wav音频文件是否正确?
3)如何从解调信号中恢复数据 - 我在流程图中遗漏了什么?
这是解调前 wav音频文件的FFT图:
更新(2016年8月2日): 我仍然在研究这个问题(偶尔),遗憾的是仍然无法检索数据.结果是看起来很有前途的1和0字符串,但没有什么可理解的.
如果有人建议找出多相时钟同步或时钟恢复MM模块的设置,或Quad Demod模块的增益,我将非常感激.
以下是基于Marcus答案的更新流程图的一个版本(还尝试了其他版本的多相时钟恢复):

但是,我仍然无法恢复任何有意义的数据.结果是1和0的长字符串,但不是正确的字符串.我试过调整几乎所有块中的所有设置.我想也许时钟恢复已经关闭了,但我尝试了各种各样的值而没有任何改进.
还有什么我不知道或应该改变吗?
如何$PYTHONPATH在Visual Studio Code中为我的工作区正确设置变量?
背景资料
我已经安装了两个版本的GNURadio:
Linux Mint软件包管理器在以下版本中安装的GNURadio版本3.7.11 /usr/lib/python2.7/dist-packages/gnuradio
由PyBOMBS安装的GNURadio版本3.7.13.4 /home/tejul/Documents/gr13/default/lib/python2.7/dist-packages/gnuradio(我的前缀目录是~/Documents/gr13/default)
只有在运行setup_env.sh脚本(除其他功能外,然后添加/home/tejul/Documents/gr13/default/lib/python2.7/dist-packages到$PYTHONPATH)然后在终端中启动python 之后,我才能使用GNURadio版本的较新版本
tejul@Wacom:~/Documents/gr13/default$ ls
bin etc include lib libexec setup_env.sh share src
tejul@Wacom:~/Documents/gr13/default$ source ./setup_env.sh
tejul@Wacom:~/Documents/gr13/default$ python
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from gnuradio import gr
>>> gr.version()
'3.7.13.4'
>>>
Run Code Online (Sandbox Code Playgroud)
当然,无需修改$ PYTHONPATH python即可导入较旧的GNURadio版本。
我想在VisualStudio Code中为新版本的GNURadio编写,运行和调试python脚本。我一直在尝试了解VSCode 的python解释器,工作区和环境的选择。
据我了解, …
我一直在尝试使用GNU Radio并遇到了tunnel.py程序.此程序允许您使用Linux TUN/TAP设备通过无线电链路隧道传输IP流量.在大多数情况下,它正在工作,但代码的一部分让我感到困惑.
有一个实现'基本MAC层'的类.该类具有回调函数,该函数将新数据包写入TUN设备.此函数(phy_rx_callback)从单独的线程调用.
该功能main_loop在发送新数据包之前执行载波检测.我不明白的是它为什么在单独的非重叠发送信道上发送之前检测接收信道.
RX和TX通道都是独立的频率,我们的硬件允许全双工通信.
所以,我的问题是main_loop执行,另一个线程异步调用phy_rx_callback函数的含义是什么?问题是我试图理解载波侦听循环的目的,我发现评论该代码会严重降低性能.在使用发送通道之前监视接收通道对我来说没有意义,实质上是将其转换为半双工.然后我没有看到使用两个频率的目的,一个用于发送,一个用于接收.我开始怀疑这里是否存在一个奇怪的线程问题.
cs_mac最初创建该类的单个实例.rx_callback函数的"指针"向下传递给实际调用它的线程类.这是cs_mac类:
class cs_mac(object):
def __init__(self, tun_fd, verbose=False):
self.tun_fd = tun_fd # file descriptor for TUN/TAP interface
self.verbose = verbose
self.tb = None # top block (access to PHY)
def set_top_block(self, tb):
self.tb = tb
def phy_rx_callback(self, ok, payload):
if self.verbose:
print "Rx: ok = %r len(payload) = %4d" % (ok, len(payload))
if ok:
os.write(self.tun_fd, payload)
def main_loop(self):
min_delay = 0.001 # seconds
while 1: …Run Code Online (Sandbox Code Playgroud) 当尝试执行使用USRP的GNU Radio程序时,我得到一个错误回溯,(在Python中)通常以以下结尾:
self.u = uhd.usrp_source(device_addr=args, stream_args=uhd.stream_args('fc32'))
File "/home/marcus/.usrlocal/lib64/python2.7/site-packages/gnuradio/uhd/__init__.py", line 122, in constructor_interceptor
return old_constructor(*args)
File "/home/marcus/.usrlocal/lib64/python2.7/site-packages/gnuradio/uhd/uhd_swig.py", line 2351, in make
return _uhd_swig.usrp_source_make(*args)
RuntimeError: LookupError: KeyError: No devices found for ----->
Run Code Online (Sandbox Code Playgroud)
USRP正在运行.
我在RHEL6系统上安装了Anaconda Python.为了运行gnuradio我需要wxPython.出于这个原因,我做到了
conda install wxpython
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试在python中导入Wx模块时.然后出现以下错误:
>>> import wx
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/scr1/nemanja/install/anaconda/lib/python2.7/site-packages/wx-3.0-gtk2/wx/__init__.py", line 45, in <module>
from wx._core import *
File "/scr1/nemanja/install/anaconda/lib/python2.7/site-packages/wx-3.0-gtk2/wx/_core.py", line 4, in <module>
import _core_
ImportError: /scr1/nemanja/install/anaconda/lib/python2.7/site-packages/wx-3.0-gtk2/wx/../../../../libwx_gtk2u-3.0.so.0: undefined symbol: g_malloc_n
Run Code Online (Sandbox Code Playgroud)
这里缺少什么?
您知道GNU Radio(GNU Radio Companion中的文件接收器)将样本存储在二进制文件中的格式吗?
我需要在Matlab中阅读这些示例,但是问题是文件太大而无法在Matlab中阅读。
我正在用C ++编写程序以读取此二进制文件。
我知道以前有人问过这个问题,但我没有找到有用的解决方案。完整的错误是:
Executing: "/home/mint/Documents/test_sensor/cycl_test/top_block.py"
Using Volk machine: avx_64_mmx_orc
Traceback (most recent call last):
File "/home/mint/Documents/test_sensor/cycl_test/top_block.py", line 87, in <module>
tb = top_block()
File "/home/mint/Documents/test_sensor/cycl_test/top_block.py", line 61, in __init__
self.cycl_MME_cpp_0 = cycl.MME_cpp(1000, 16, 0.1)
AttributeError: 'module' object has no attribute 'MME_cpp'
Run Code Online (Sandbox Code Playgroud)
我从之前的问题中找到了一些可能的原因:
函数参数不匹配(包括 .cc 和 .h 中的引用函数)
喝水问题
.xml 文件中的回调
nm -C -u libgnuradio-.so
我已经检查了前 3 个原因,但我不确定如何使用最后一个方法找出未定义的符号。结果有一部分:
U gsl_linalg_SV_decomp
U gsl_matrix_alloc
U gsl_matrix_set
U gsl_matrix_set_zero
U gsl_vector_alloc
U gsl_vector_get
Run Code Online (Sandbox Code Playgroud)
这是否意味着所有 gsl 函数都未定义?如果是这样,我该如何处理?
除了这四个原因,我的问题还有其他提示吗?
我感谢您的帮助。
附录:
1.MME_cpp_impl.cc
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include …Run Code Online (Sandbox Code Playgroud)