我一直遇到写文件的一些问题 - 即无法写得足够快.
为了解释,我的目标是捕获通过千兆以太网传输的数据流,并将其保存到文件中.
原始数据以10MS/s的速率进入,然后将其保存到缓冲区并随后写入文件.
以下是相关的代码部分:
std::string path = "Stream/raw.dat";
ofstream outFile(path, ios::out | ios::app| ios::binary);
if(outFile.is_open())
cout << "Yes" << endl;
while(1)
{
rxSamples = rxStream->recv(&rxBuffer[0], rxBuffer.size(), metaData);
switch(metaData.error_code)
{
//Irrelevant error checking...
//Write data to a file
std::copy(begin(rxBuffer), end(rxBuffer), std::ostream_iterator<complex<float>>(outFile));
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是将样本写入文件需要很长时间.大约一秒钟后,发送样本的设备报告其缓冲区已溢出.在对代码进行一些快速分析之后,几乎所有的执行时间都花在了std::copy(...)
(确切地说是99.96%的时间).如果我删除这一行,我可以运行该程序几个小时而不会遇到任何溢出.
也就是说,我对如何提高写入速度感到困惑.我已经浏览了这个网站上的几个帖子,看起来最常见的建议(关于速度)是实现文件写入,就像我已经完成的那样 - 通过使用std::copy
.
如果它有用,我在Ubuntu x86_64上运行这个程序.任何建议,将不胜感激.
我对此渠道中的USSD和安全性有疑问.
如您今天所知,手机银行和许多使用USSD的付款,我想知道USSD安全吗?
如果USSD事务使用a5/1进行加密,那么它完全打破了几年,现在可以被usrp(或HackRF板)捕获并通过为a5/1创建的彩虹表进行解码.
我认为这些交易不是很安全,但我想在这次交易中更多地了解这个协议和加密.我不知道使用a5/1或GSM-7编码的USSD代码...所以我的问题是:
谢谢大家.
当尝试执行使用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正在运行.
我正在尝试使用 GNURadio、GRC 和 USRP1 以及 RFX2400 和 2.4GHZ 天线使用 .ts 视频文件发送视频文件。我们有两个 USRP,一个用作发送器,另一个用作接收器。我们正在使用 GMSK 调制和解调,在调制和解调完成之前和之后进行编码和解码,以及在将信号从一个 USRP 发送到另一个之前进行常数乘法。在解调和解码之前对接收的信号进行低通滤波,然后将其保存到 video_output.ts 文件中。
这就是我们当前的问题所在。我们有一个我们自己制作的视频。当我们通过我们的输出视频文件发送此视频时,即使我们可以看到由于 FFT 接收器放置在 LPF 和 USRP 源之间,USRP 上正在接收某些信息,我们也不会包含任何信息。我怎样才能做到这样我才能真正保存那些进来的字节。
我们读到我们将不得不使用 mkfifo 命令创建两个管道文件,然后将我们想要传输的视频文件复制到创建的管道文件中,然后我们应该能够正确发送文件。这给我带来了一些额外的问题。我一直在安装以任何方式包含 x264 和 h264 编码的软件包,但仍然给出找不到编码类型的错误。我们确实对 x264 软件包进行了安装,但仍然无法正常工作。所以 atm 我们一直在尝试将我们的视频文件编码为创建的管道文件。
谢谢,
我有一个关于uint8数据表示的问题.
我有一个MATLAB MAT文件,其中保存了uint8数据.
MAT文件正在使用Python读取scipy.io.loadmat()
并形成字典.从字典中提取对应于MAT文件的数据字段的数组.该数组看起来像:
array[[162],[122],...[135],dtype:uint8]
Run Code Online (Sandbox Code Playgroud)
之后,此数组将保存为txt格式,以便以后读取文件.但是,txt文件中的数据是双精度的.例如,uint8
数据162
保存为1.620000000000000000e+02
.这不是我想要的,因为它会占用太多的内存.
我需要的是每一个字节source_file.read()
对应一个uint8
数据.
有没有更好的方法来表示uint8数据?可以将uint8转换为字符串,但仍需要2-3个字节.
我已成功安装了REDHAWK版本1.8.3的UHD设备.我不清楚如何将波形中的组件连接到由设备管理器管理的设备.我也不清楚IDL接口和USRP设备上的数据端口之间的相互作用.
我无法找到一个简单的例子来发送和接收利用USRP设备的波形(例如,信号发生器组件向USRP发送正弦波).有没有人有这个或任何建议的经验?
我在GNU Radio Companion中运行一个非常简单的流程图,由USRP源组成,它连接到(1)连接到wxgui范围接收器的正交demod和(2)wxgui fft接收器.这些显示并绘制预期结果,但同时控制台部分充满字母D,这会减慢GUI元素的速度,直到它们停止响应.从控制台输出:
生成:"/ home /gnuradio/top_block.py"
执行:"/ home/nuuradio/top_block.py"
Linux的; GNU C++版本4.7.3; Boost_104900; UHD_003.005.004-0未知
使用Volk机器:ssse3_64 - 打开USRP2/N系列设备... - 当前recv帧大小:1472字节 - 当前发送帧大小:1472字节 - 检测内部GPSDO ....未找到
UHD警告:无法设置线程优先级.表现可能会受到负面影响.有关说明,请参阅手册中的一般应用说明.EnvironmentError:OSError:pthread_setschedparam中的错误DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ...
其中Ds重复直到流程图终止.不幸的是,单字母错误代码(假设它们是这些)在网上搜索极其困难!